ВУЗ:
Составители:
Основы компьютерной графики для программистов 66
____________________________________________________________________________________________________________________
http://www.ksu.ru/persons/9134.ru.html
Контекст воспроизведения
Рассмотрим процедуру FormCreate, которая выполняет подготовительные действия для
работы с OpenGL. Главное, что здесь требуется – создание
контекста воспроизведения
OpenGL и установка его текущим. OpenGL недостаточно просто ссылки на окно
Windows или контекст устройства. Контекст воспроизведения связывает окно с так
называемым конвейером OpenGL с учетом установленного формата пикселов.
procedure TfrmGL.FormCreate(Sender: TObject);
var
pfd : TPixelFormatDescriptor;
nPixelFormat : integer;
begin
hdc := GetDC (Panel1.Handle);
FillChar(pfd,SizeOf(pfd),0);
pfd.nSize:= SizeOf(pfd);
pfd.dwFlags:=PFD_DOUBLEBUFFER;
nPixelFormat:= ChoosePixelFormat(hdc,@pfd);
if nPixelFormat = 0 then
begin
ShowMessage(‘Ошибка OpenGL’);
Halt;
end;
SetPixelFormat(hdc,nPixelFormat,@pfd);
RContext := wglCreateContext(hdc);
WglMakeCurrent(hrc,RContext);
glClearColor (0.0, 0.0, 0.0,1.0); // цвет фона
glEnable(GL_DEPTH_TEST);
SphereObj:=gluNewQuadric;
CylObj :=gluNewQuadric;
LightObj :=gluNewQuadric;
end;
Первый оператор в этой процедуре – получение оконного контекста устройства с
помощью вызова функции GetDC. На основе полученного значения выбираем и
устанавливаем формат пиксела. Формат пиксела – это структура на С или, как в данном
случае, запись на ObjectPascal типа
TPixelFormatDescriptor. В документации эта
структура содержит следующие поля:
typedef struct tagPIXELFORMATDESCRIPTOR { // pfd
WORD nSize;//размер структуры данных
WORD nVersion;//версия структуры данных – всегда 1.
DWORD dwFlags;//битовые флаги, например: PFD_SUPPORT_GDI
BYTE iPixelType;//тип пиксела: PFD_TYPE_RGBA или
//PFD_TYPE_COLORINDEX
BYTE cColorBits;//битов для описания цвета пиксела, кроме Alpha
BYTE cRedBits;//битов красной компоненты пиксела
BYTE cRedShift;
BYTE cGreenBits; //битов зеленой компоненты пиксела
BYTE cGreenShift;
BYTE cBlueBits; //битов синей компоненты пиксела
Основы компьютерной графики для программистов 66 ____________________________________________________________________________________________________________________ Контекст воспроизведения Рассмотрим процедуру FormCreate, которая выполняет подготовительные действия для работы с OpenGL. Главное, что здесь требуется – создание контекста воспроизведения OpenGL и установка его текущим. OpenGL недостаточно просто ссылки на окно Windows или контекст устройства. Контекст воспроизведения связывает окно с так называемым конвейером OpenGL с учетом установленного формата пикселов. procedure TfrmGL.FormCreate(Sender: TObject); var pfd : TPixelFormatDescriptor; nPixelFormat : integer; begin hdc := GetDC (Panel1.Handle); FillChar(pfd,SizeOf(pfd),0); pfd.nSize:= SizeOf(pfd); pfd.dwFlags:=PFD_DOUBLEBUFFER; nPixelFormat:= ChoosePixelFormat(hdc,@pfd); if nPixelFormat = 0 then begin ShowMessage(‘Ошибка OpenGL’); Halt; end; SetPixelFormat(hdc,nPixelFormat,@pfd); RContext := wglCreateContext(hdc); WglMakeCurrent(hrc,RContext); glClearColor (0.0, 0.0, 0.0,1.0); // цвет фона glEnable(GL_DEPTH_TEST); SphereObj:=gluNewQuadric; CylObj :=gluNewQuadric; LightObj :=gluNewQuadric; end; Первый оператор в этой процедуре – получение оконного контекста устройства с помощью вызова функции GetDC. На основе полученного значения выбираем и устанавливаем формат пиксела. Формат пиксела – это структура на С или, как в данном случае, запись на ObjectPascal типа TPixelFormatDescriptor. В документации эта структура содержит следующие поля: typedef struct tagPIXELFORMATDESCRIPTOR { // pfd WORD nSize;//размер структуры данных WORD nVersion;//версия структуры данных – всегда 1. DWORD dwFlags;//битовые флаги, например: PFD_SUPPORT_GDI BYTE iPixelType;//тип пиксела: PFD_TYPE_RGBA или //PFD_TYPE_COLORINDEX BYTE cColorBits;//битов для описания цвета пиксела, кроме Alpha BYTE cRedBits;//битов красной компоненты пиксела BYTE cRedShift; BYTE cGreenBits; //битов зеленой компоненты пиксела BYTE cGreenShift; BYTE cBlueBits; //битов синей компоненты пиксела http://www.ksu.ru/persons/9134.ru.html
Страницы
- « первая
- ‹ предыдущая
- …
- 64
- 65
- 66
- 67
- 68
- …
- следующая ›
- последняя »