GLuint, GLenum, GLbitfield - тип unsigned long, суффикс ui.
GLclampf - тип float, со значениями от 0 до 1.
GLclampd - тип double, со значениями от 0 до 1.
Имена функций OpenGL подчиняются следующему правилу: тип gl имя_функции{1|2|3|4}{b|s|i|f|d|ub|us |ui}{ |v}
(typel argl,…,typeN argN).
Цифры, следующие за именем, указывают число главных аргументов. За цифрами следует суффикс, указывающий на тип главных аргументов. Если присутствует суффикс v, то главные аргументы передаются через указатель. Поэтому для краткости под встречаемым в книге именем функции может подразумеваться целая группа функций. Используя перегрузку функций, можно реализовать это и практически.
Для подсоединения OpenGL кода к Windows программам Microsoft поддерживает целую группу функций, имеющих префикс wgl. Они объявлены в файле windows.h.
Шаблон примеров
Все примеры книги используют единый шаблон. Поэтому в соответствующих местах программа будет приводиться не полностью, а лишь необходимая часть. Шаблон разбит функциями на независимые смысловые части. Используемые дополнительные заголовочные файлы содержат описания классов, которые могут применяться в различных примерах. Их листинг приведен в третьей главе.
#include"myinc.h" // заголовочные файлы
int width=640,height=480; // размеры окна
GLmain gl; // объект OpenGL
BASE_input in; // объект ввода
// создание и регистрация нового оконного класса ATOM winclass();
HWND makewin(char*title); // новое окно //оконная процедура
LRESULT CALLBACK WndProc(HWND hWnd,UINT uMsg,
WPARAM wParam,LPARAM lParam); void draw(); // вывод сцены
void example_init(); // инициализация примера
void example_deinit(); // деинициализация примера Изменяемой частью шаблона являются функции examplejnit, example_deinit, draw, которые для каждого примера заполняются нужным содержимым. А также могут быть добавлены дополнительные данные и функции, специфичные для примера.
void example_init() // инициализация примера
{
gl.set(1); // инициализация OpenGL // . . .
}
void example_deinit() // освобождение ресурсов {
11 …
}
void draw() // вывод сцены {
П …
}
Следующие три функции типичны для любой оконной Windows программы. Работа OpenGL в Windows реализована на уровне окон. Каждому окну сопоставляется контекст отображения, содержащий всю необходимую информацию. Таким образом, программа может иметь одно и более окон с быстрым графическим выводом. Каждое окно должно удовлетворять следующим условиям: оконный класс должен иметь стиль CS_OWNDC; окно должно иметь стили WS_CLIPCHILDREN и WS_CLIPSIBLINGS; для устранения мерцания окно не должно иметь кисти.
Данные о состоянии виртуальных клавиш, поступающие в оконную процедуру, автоматически сохраняются в объекте ввода in, описанного в файле wininput.h.
// регистрация оконного класса ATOM winclass()
{
WNDCLASS wc;