Форум: "Игры";
Текущий архив: 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.05 c