Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 2006.01.22;
Скачать: [xml.tar.bz2];

Вниз

FullSceen   Найти похожие ветки 

 
SergProger ©   (2005-08-07 22:09) [0]

Всем огромный привет! Народ, скажите пожалуйста, как реализовать FullScreen в игре, не используя ни DelphiX, ни OpenGL, ни что нибудь другое, т.е. форма во весь экран и изменение разрешения экрана + возврат к предыдущему при minimize или наоборот. Заранее спасибо!


 
grouzd[E]v ©   (2005-08-07 22:12) [1]

Гм.... Пардон, а как организовать это дело OGL"ом? Я вот всю жизню думал что тут WinAPI нужен....


 
XProger ©   (2005-08-07 22:21) [2]

http://xproger.mirg.ru/files/XTropper_src.rar
XTropper.dpr, l_gl.pas

P.S.
OpenGL не умеет разрешение менять (а это и не нужно ему)


 
MeF Dei Corvi ©   (2005-08-08 04:54) [3]


> XProger ©   (07.08.05 22:21) [2]

Прогер, заметь "...форма во весь экран ", т.е. я думаю твои сырцы ему мало помогут...


 
Xeno ©   (2005-08-08 05:56) [4]

Var
       BackHeight,BackWidth : Integer;
       BackDCHeight,BackDCWidth : Integer;

...

function ChangeDisplayResolution(x, y,fDepth : Cardinal):Boolean;
var
 DeviceMode : TDEVMODE;
begin

with DeviceMode do begin
 dmSize:=SizeOf(DeviceMode);
 dmBitsPerPel:=fDepth;
 dmPelsWidth:=x;
 dmPelsHeight:=y;
 dmFields:=DM_BITSPERPEL or DM_PELSWIDTH or DM_PELSHEIGHT;
 result:=False;
 if ChangeDisplaySettings(DeviceMode,CDS_TEST or CDS_FULLSCREEN) <> DISP_CHANGE_SUCCESSFUL
  then Exit;
 Result:=ChangeDisplaySettings(DeviceMode,CDS_FULLSCREEN) = DISP_CHANGE_SUCCESSFUL;
end;
end;

procedure SetResolution(pForm : TForm;X,Y,Dp:integer;Active : Boolean);
Var   res : TResolution;
 tmpDevMode : TDevMode;
begin
 if Active then begin
    BackHeight := pForm.Height;
    BackWidth :=  pForm.Width;
    BackDCHeight := Screen.Height;
    BackDCWidth :=  Screen.Width;
    end;

 if (x=0) and (y=0) then
 begin
   pForm.Height:= Screen.Height;
   pForm.Width:= Screen.Width;
 end else
 if (x<>0) and (y<>0) then
 begin
//   res:=GetIndexFromResolution(x, y, cScreenDepthToBPP[sd32bits]);
  res:=GetIndexFromResolution(x, y, Dp);
  if res=0 then
     raise Exception.Create("Unsupported video mode");

   ChangeDisplayResolution(x,y,Dp);
   pForm.Height:= Y;
   pForm.Width:= X;
 end;

 if Active then begin
  ShowWindow(FindWindow("Shell_TrayWnd", nil), SW_HIDE);
  pForm.BorderStyle := bsNone;
  pForm.Position := poDefault;
  pForm.Cursor := crnone;
  // Включение режима
  SystemParametersInfo(SPI_SCREENSAVERRUNNING, 1, 0, 0);
 end else begin
  ShowWindow(FindWindow("Shell_TrayWnd", nil), SW_SHOW);
  pForm.BorderStyle := bsSingle;
  pForm.Position := poDesigned;
  // Выключение режима
  SystemParametersInfo(SPI_SCREENSAVERRUNNING, 0, 0, 0);
    pForm.Height := BackHeight;
    pForm.Width := BackWidth;
    ChangeDisplayResolution(BackDCWidth,BackDCHeight,Dp);
 end;
end;
....
SetResolution(800,600,16,true); // - установить режим 800x600x16
SetResolution(0,0,0,false); // - вернуть всё на место


 
SergProger ©   (2005-08-08 14:23) [5]

Xeno, спасибо, но при попытке откомпилировать он показал, что тип TResolution - undeclared identifier. Что делать? Какой модуль подключать?


 
XProger ©   (2005-08-08 17:30) [6]

SergProger, я тебе вроде ссылку давал...


 
Xeno ©   (2005-08-09 05:42) [7]

>SergProger
Блин, ну ты даёшь, напрягись немного и поищи в модулях GLScene,это-же травиальная задача,примеров в сети предостаточно...


 
TButton ©   (2005-08-11 05:41) [8]


> напрягись немного и поищи в модулях GLScene


>не используя ни DelphiX, ни OpenGL



Страницы: 1 вся ветка

Форум: "Игры";
Текущий архив: 2006.01.22;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.044 c
9-1123271153
Cash
2005-08-05 23:45
2006.01.22
Counter Line v0.130a


14-1135398238
Дремучий
2005-12-24 07:23
2006.01.22
А надо ли делать автоматическое Windows Update?


1-1134561283
Antonn
2005-12-14 14:54
2006.01.22
Оконная тень


9-1121088229
FRick
2005-07-11 17:23
2006.01.22
Прошу посмотрите мой наработки!


2-1136323169
!Han!
2006-01-04 00:19
2006.01.22
ООП





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский