Главная страница
    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.036 c
14-1129192100
Иванов__
2005-10-13 12:28
2005.11.06
Что случилось с форумом?


1-1129547467
Хрюндель
2005-10-17 15:11
2005.11.06
Как передать в функцию как аргумент - тоже фукцию?


14-1129181128
syte_ser78
2005-10-13 09:25
2005.11.06
Книга "советы программистов"


1-1129728289
diwww
2005-10-19 17:24
2005.11.06
Как отследыть событие "сворачивание окна" в TrayBar у формы?


4-1125764005
viv-x
2005-09-03 20:13
2005.11.06
Работа с TAPI на Delphi под Win 98 и Win XP





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