Повноекранна візуалізація в opengl

У міру того як OpenGL ставав популярним в середовищі виробників ігор для ПК, виникало питання: як за допомогою OpenGL виконати повноекранну візуалізацію? Насправді, якщо ви читаєте цю главу з початку, то вже знаєте, як за допомогою OpenGL виконувати повноекранну візуалізацію - точно так само, як візуалізацію в будь-якому іншому вікні! Правильно це питання слід формулювати так: як створити вікно, що займає весь екран і без рамки по краях? Як тільки вдасться це зробити, візуалізація в даному вікні не буде відрізнятися від візуалізації в будь-якому іншому вікні, розібраної в прикладах цієї книги. Хоча дане питання не пов'язаний строго з OpenGL, він представляє інтерес для більшості читачів, тому зупинимося на ньому докладніше.

Створення вікна без рамки

Першим завданням є створення вікна, що не має рамки або підпису. Ця процедура досить проста. Нижче наводиться код створення вікна з програми GLRECT. Єдине, що ми зробили, - використовували стиль вікна WS_POPUP замість WS_OVERLAPPEDWINDOW.

Повноекранна візуалізація в opengl

Результат виконання програми з таким кодом показаний на рис. 13.9.Как видно, якщо не налаштувати належним чином стиль, вікно не матиме ні підпису, ні рамки. Не забувайте, що тепер вікно не містить кнопки, клацнувши на якій, можна його закрити. Щоб тепер вийти з програми, користувачеві потрібно натиснути Alt + F4. Більшість так званих "доброзичливих до користувача" (user-friendly) програм для завершення очікують від користувача введення з клавіатури (наприклад, натискання клавіші або).

Створення вікна на весь екран

Створення вікна, розмір якого дорівнює розміру екрану, майже так само тривіально, як і створення вікна без підпису або рамки. Параметри функції CreateWindow дозволяють задавати, де буде розташовуватися лівий верхній кут вікна, а також вказувати ширину і висоту вікна. Для створення повноекранного вікна в якості лівого верхнього кута слід завжди використовувати (0,0). Єдина проблема пов'язана з визначення розміру робочого столу, щоб ви могли задати правильну ширину і висоту вікна. Дану інформацію легко отримати, використовуючи функцію Windows GetDeviceCaps.

У лістингу 13.9 (фрагмент програми FSCREEN) показаний новий варіант функції WinMain. Щоб використовувати GetDeviceCaps, потрібно обробник контексту пристрою. Оскільки ми знаходимося в процесі створення основного вікна, потрібно використовувати контекст вікна робочого столу.