| Chapter 4 Полезные и бесполезные мелочи
4.14  Как запустить OpenGL на весь экран?    
 В OpenGL нет полноэкранного режима, только
оконный. Это, однако, не проблема - ничто не мешает
сделать окно размером во весь экран (скажем,
1024x768); истинные размеры экрана можно получить с
помощью функции GetSystemMetrics(SM_CYSCREEN). Как это скажется на производительности -
целиком зависит от драйвера видеокарты. В идеале,
он должен понимать такую ситуацию как особую.
Кстати, драйвера для чипов
3Dlabs так
и делают - если окно программы полностью
перекрывает экран, используется аппаратная
двойная буферизация. Если же окно программы
занимает только часть экрана, драйвер просто
копирует данные из одной области видеопамяти в
другую. И еще одно замечание. Чтобы курсор мыши не
портил вид, его можно спрятать с помощью функции
SetCursor(NULL), а
показать обратно - используя ту же функцию, но с
правильным хэндлом курсора (HCURSOR) в качестве
параметра.Можно использовать библиотеку GLUT. В этой библиотеке имеется функция
glutFullScreen(); В этой библиотеке имеется также так называемый Game-Mode.
Это значит, что можно задавать не только полноэкранный режим но и определять его
параметры, например: 
…
 glutInit(&argc, argv);
 // Задаётся ширина и высота окна OpenGL
 glutInitWindowSize(windowwidth, windowheight);
 glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE);
 //Размер экрана:число бит на пиксель@частота обновления экрана
 glutGameModeString("640x480:16@72");
 glutEnterGameMode(); // Войти в Game-Mode
…
Более детально о GLUT смотрите в разделе 7.7.
Второй способ, действует только в Windows.
…
// Set Display mode 800x600 32bpp
 DEVMODE md = {0};
 md.dmSize       = sizeof(md);
 md.dmFields     = DM_PELSWIDTH | DM_PELSHEIGHT;
 md.dmPelsWidth  = 800; // Ширина экрана
 md.dmPelsHeight = 600; // Высота экрана
 md.dmFields |= DM_BITSPERPEL;
 md.dmBitsPerPel = 32; // Количество бит на пиксель
 int change;
 change = ChangeDisplaySettings(&md, CDS_FULLSCREEN);
…
 
 |