Форум: "Игры";
Текущий архив: 2005.11.06;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.037 c