Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 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
8-1118385459
Chaser
2005-06-10 10:37
2005.11.06
Глюк или не глюк TImage?


1-1129113849
Mishenka
2005-10-12 14:44
2005.11.06
Как в ListView с CheckBox отловить событие установки галки?


14-1129545313
Opilki_Inside
2005-10-17 14:35
2005.11.06
Защита БД


1-1129551717
Bagdat
2005-10-17 16:21
2005.11.06
Маска в StringGrid


14-1129180394
Ega23
2005-10-13 09:13
2005.11.06
С днем рождения! 13 октября





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский