Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.11.06;
Скачать: CL | DM;

Вниз

OpenGL и Full Screen   Найти похожие ветки 

 
Dib   (2005-06-25 15:57) [0]

Подскажите плиз как в OpenGL сделать полноэкранный режим?


 
VVV-First   (2005-06-25 18:12) [1]

ну помоему это делается не средствами OpenGl а как минимум API

function SetFullscreenMode(ModeIndex: Integer): Boolean;
// изменение видеорежима, задаваемого "ModeIndex"
var
 DeviceMode: TDevMode;
begin
 with DeviceMode do
 begin
   dmSize := SizeOf(DeviceMode);
   dmBitsPerPel := VideoModes[ModeIndex].ColorDepth;
   dmPelsWidth := VideoModes[ModeIndex].Width;
   dmPelsHeight := VideoModes[ModeIndex].Height;
   dmFields := DM_BITSPERPEL or DM_PELSWIDTH or DM_PELSHEIGHT;
   // при неудачной смене режима переходим в режим текущего разрешения
   Result := ChangeDisplaySettings(DeviceMode, CDS_FULLSCREEN) =
     DISP_CHANGE_SUCCESSFUL;
   if Result then
     ScreenModeChanged := True;
   if ModeIndex = 0 then
     ScreenModeChanged := False;
 end;
end;


 
frame ©   (2005-06-25 18:23) [2]

Просто указываешь с стиле окна при его создании
WS_POPUP or WS_CLIPSIBLINGS or WS_CLIPCHILDREN - WS_BORDER
и не нужно ничего мудрить с видеорежимом


 
VVV-First   (2005-06-25 19:44) [3]

ну тогда если я не ошибаюсь будут доступны верхнееи нижнее меню (ну там хде пуск и прочее...) , а оно вам надо?


 
Dib   (2005-06-25 20:35) [4]


> VVV-First   (25.06.05 18:12) [1]

Я всё-таки не совсем понимаю, где взять ModeIndex?


 
XProger ©   (2005-06-25 21:50) [5]

VideoModes это твой массив режимов экрана
640х480х16
640х480х32
800х600х16
800х600х32
и т.п.


 
Dib   (2005-06-25 21:55) [6]

Тогда получается

VideoModes: array of TDevMode;

??


 
XProger ©   (2005-06-25 22:31) [7]


var
VideoModes: array of record
 ColorDepth : Byte;
 Width      : integer;
 Height     : integer;
end;


 
Кефир87 ©   (2005-06-26 00:47) [8]

А у меня ничего не получается 8(
Вот так пишу...

const modes_count = 9;
const CWE_VideoMode def_modes[modes_count] =
{
{640, 480, 16, "640x480x16"},
{640, 480, 24, "640x480x24"},
{640, 480, 32, "640x480x32"},
{800, 600, 16, "800x600x16"},
{800, 600, 24, "800x600x24"},
{800, 600, 32, "800x600x32"},
{1024, 768, 16, "1024x768x16"},
{1024, 768, 24, "1024x768x24"},
{1024, 768, 32, "1024x768x32"}
};

<...>

int CWE_DLL cweGoFullScreen(int vMode)
{
_devicemodeA DevMode;

DevMode.dmSize = sizeof(DevMode);
DevMode.dmBitsPerPel = def_modes[vMode].BPP;
DevMode.dmPelsWidth = def_modes[vMode].sWidth;
DevMode.dmPelsHeight = def_modes[vMode].sHeight;
DevMode.dmFields = DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT;

return (ChangeDisplaySettingsA(&DevMode, CDS_FULLSCREEN)==DISP_CHANGE_SUCCESSFUL);

}


Какой режим не укажи всеравно ничего не меняется... Наверно я что-то не так делаю...

ЗЫ: Извиняйте что не понашему... обстоятельства заставили 8(((


 
XProger ©   (2005-06-26 12:20) [9]


DevMode.dmBitsPerPel = 16;
DevMode.dmPelsWidth = 640;
DevMode.dmPelsHeight = 480;


 
Кефир87 ©   (2005-06-26 15:25) [10]

Блин... Пардон это я ступил... Оказывается все работает 8)
Но не совсем... Вот такая у меня функция:

int CWE_DLL cweGoFullScreen(int vMode, HWND hWnd)
{
_devicemodeA DevMode;
int fs = 0;

DevMode.dmSize = sizeof(DevMode);
DevMode.dmBitsPerPel = def_modes[vMode].BPP;
DevMode.dmPelsWidth = def_modes[vMode].sWidth;
DevMode.dmPelsHeight = def_modes[vMode].sHeight;
DevMode.dmFields = DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT;

fs = (ChangeDisplaySettingsA(&DevMode, CDS_FULLSCREEN)==DISP_CHANGE_SUCCESSFUL);

if(fs)
{
 SetWindowLong(hWnd, GWL_STYLE, WS_POPUP | WS_CLIPCHILDREN | WS_CLIPSIBLINGS);
 SetWindowLong(hWnd, GWL_EXSTYLE, WS_EX_APPWINDOW);

 SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, def_modes[vMode].sWidth, def_modes[vMode].sHeight, SWP_SHOWWINDOW);
}

return fs;

}


И все вроде-бы нормально, толко сверху получается черная полоса. От чего это?


 
Кефир87 ©   (2005-06-26 16:02) [11]

Тфу! Опять ступил... Забыл glViewport...


 
frame ©   (2005-06-26 21:20) [12]

Ну если так, то тогда создавайте DDraw в монопольном режиме и выводите графику на него



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

Текущий архив: 2005.11.06;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.045 c
2-1129197459
Слава-АБС
2005-10-13 13:57
2005.11.06
Пошаговый поиск по таблице.


14-1129636023
Stranger53
2005-10-18 15:47
2005.11.06
Новые версии Delphi


4-1125314385
leonidus
2005-08-29 15:19
2005.11.06
Как поместить форму программы поверх всех?


1-1129623344
V-A-V
2005-10-18 12:15
2005.11.06
TreeView


2-1129215799
Fast2
2005-10-13 19:03
2005.11.06
Почему при выполнении пишет Transaction is active ?