Инициализация библиотек и вывод примитивов

этого могут использоваться коды из видеопамяти, подаваемые на цифроаналого-вый преобразователь напрямую или через регистры палитры. Также следует указать, сколько бит будет использоваться для кодирования каждого компонента цвета. При рисовании может выполняться заполнение видимой части видеобуфера или предварительное заполнение невидимой страницы с последующим переключением страниц для отображения готового рисунка. Это можно организовать пересылкой данных из невидимой страницы в видимую или при помощи аппаратного переключения.

Всю указанную информацию библиотека получает из контекста устройства и описания формата пиксела, которое выполнено в виде структуры типа PIXELFORMATDESCRIPTOR.

В приложении OpenGL_minim, построенном на базе проекта Template, инициализация выполняется функцией StartOpenGLO, которая вызывается после создания окна, но до начала вывода графических примитивов, как это показано в листинге 22.1.

Листинг 22.1

int PostlnitWndCHWND hWnd) {
if(StartOpenGL( hWnd.hGLRO) return 3;
return 0;
}

Можно также вызвать Sta rtOpenGL ( ) из оконной функции по сообщению WM_CREATE.

При инициализации библиотеки необходимо прежде всего получить контекст устройства (hDC). После этого следует заполнить структуру типа PIXELFORMATDESCRIPT0R. В нашем примере будет использоваться переменная pfd. Большое количество заполняемых полей этой структуры может стать психологическим барьером, который будет мешать начинающему разработчику создать свое первое трехмерное графическое приложение. Но программист может заполнить все поля структуры нулями и только в некоторые из них записать необходимые данные. В полях pfd. cDepthBi ts и pfd.cColorBits задается разрядность ячеек Z-буфера и цветового буфера. В поле pfd. dwFl ags устанавливается флаг PFD_SUPPORT_OPENGL, а при необходимости создания неотображаемой активной страницы - флаг PFDJXXJBLEBUFFER. В поле pfd. i Pi xel Type нужно указать требования к видеорежиму. Константа РFD_TY РE_RGBА указывает, что программист рассчитывает использовать непалитровый видеорежим. Эта константа равна нулю, так что это поле тоже можно не задавать явно.


⇐ Предыдущая| |Следующая ⇒