ВУЗ:
Составители:
Основы компьютерной графики для программистов 67
____________________________________________________________________________________________________________________
http://www.ksu.ru/persons/9134.ru.html
BYTE cBlueShift;
BYTE cAlphaBits;
BYTE cAlphaShift;
BYTE cAccumBits;
BYTE cAccumRedBits;
BYTE cAccumGreenBits;
BYTE cAccumBlueBits;
BYTE cAccumAlphaBits;
BYTE cDepthBits;//битов элемент глубины в z-буфере
BYTE cStencilBits;
BYTE cAuxBuffers;
BYTE iLayerType;//для этой версии всегда PFD_MAIN_PLANE
BYTE bReserved;
DWORD dwLayerMask;
DWORD dwVisibleMask;
DWORD dwDamageMask;
} PIXELFORMATDESCRIPTOR;
Для выбора требуемого формата пиксела необходимо заполнить наиболее важные поля
записи и сделать запрос к OpenGL. Если система в состоянии работать с заданным
форматом, то результат вызова функции ChoosePixelFormat(hdc,@pfd) будет
ненулевым.
Для установки формата пиксела, который наиболее близок к тому, который установлен
в операционной системе, достаточно обнулить все поля записи, и вызвать
ChoosePixelFormat, предварительно указав в поле pfd.nSize размер самой записи в
байтах. В качестве единственного требования указываем на необходимость двойной
буферизации графического вывода:
pfd.dwFlags:=PFD_DOUBLEBUFFER. При этом
изображение будет строиться на невидимой области, а затем полностью выводиться на
экран. Это гарантирует нам отсутствие мерцания изображения при смене кадров.
При успешном получении номера формата пикселов устанавливаем его:
SetPixelFormat(hdc,nPixelFormat,@pfd).
Далее, на основе контекста устройства и формата пикселов создаем контекст
воспроизведения OpenGL:
RContext := wglCreateContext(hdc);
и устанавливаем его текущим:
wglMakeCurrent(hdc,RContext).
Для завершения работы с OpenGL требуется освободить текущий контекст устройства:
wglMakeCurrent(0, 0) ,
и затем удалить его:
wglDeleteContext(RContext).
Как видим, с помощью функции wglMakeCurrent можно не только устанавливать
текущий контекст воспроизведения, но и освобождать его. Рассмотрим определение
этой функции:
BOOL wglMakeCurrent(
HDC hdc, //Контекст устройства на который осуществляется вывод графики
HGLRC hglrc //Контекст воспроизведения OpenGL для текущего потока
Основы компьютерной графики для программистов 67
____________________________________________________________________________________________________________________
BYTE cBlueShift;
BYTE cAlphaBits;
BYTE cAlphaShift;
BYTE cAccumBits;
BYTE cAccumRedBits;
BYTE cAccumGreenBits;
BYTE cAccumBlueBits;
BYTE cAccumAlphaBits;
BYTE cDepthBits;//битов элемент глубины в z-буфере
BYTE cStencilBits;
BYTE cAuxBuffers;
BYTE iLayerType;//для этой версии всегда PFD_MAIN_PLANE
BYTE bReserved;
DWORD dwLayerMask;
DWORD dwVisibleMask;
DWORD dwDamageMask;
} PIXELFORMATDESCRIPTOR;
Для выбора требуемого формата пиксела необходимо заполнить наиболее важные поля
записи и сделать запрос к OpenGL. Если система в состоянии работать с заданным
форматом, то результат вызова функции ChoosePixelFormat(hdc,@pfd) будет
ненулевым.
Для установки формата пиксела, который наиболее близок к тому, который установлен
в операционной системе, достаточно обнулить все поля записи, и вызвать
ChoosePixelFormat, предварительно указав в поле pfd.nSize размер самой записи в
байтах. В качестве единственного требования указываем на необходимость двойной
буферизации графического вывода: pfd.dwFlags:=PFD_DOUBLEBUFFER. При этом
изображение будет строиться на невидимой области, а затем полностью выводиться на
экран. Это гарантирует нам отсутствие мерцания изображения при смене кадров.
При успешном получении номера формата пикселов устанавливаем его:
SetPixelFormat(hdc,nPixelFormat,@pfd).
Далее, на основе контекста устройства и формата пикселов создаем контекст
воспроизведения OpenGL:
RContext := wglCreateContext(hdc);
и устанавливаем его текущим:
wglMakeCurrent(hdc,RContext).
Для завершения работы с OpenGL требуется освободить текущий контекст устройства:
wglMakeCurrent(0, 0) ,
и затем удалить его:
wglDeleteContext(RContext).
Как видим, с помощью функции wglMakeCurrent можно не только устанавливать
текущий контекст воспроизведения, но и освобождать его. Рассмотрим определение
этой функции:
BOOL wglMakeCurrent(
HDC hdc, //Контекст устройства на который осуществляется вывод графики
HGLRC hglrc //Контекст воспроизведения OpenGL для текущего потока
http://www.ksu.ru/persons/9134.ru.html
Страницы
- « первая
- ‹ предыдущая
- …
- 65
- 66
- 67
- 68
- 69
- …
- следующая ›
- последняя »
