Все команды (процедуры и функции) OpenGL начинаются с префикса gl, и все константы - с префикса GL_. Кроме того, в имена функций, и процедур OpenGL входят суффиксы, несущие информацию о числе передаваемых параметров и их типе. В табл. 4.1 приводятся вводимые OpenGL типы данных, каким стандартным типам языка С они соответствуют и какие суффиксы им соответствуют.
Таблица 4.1
Суффикс |
Описание |
Тип в С |
Типы в OpenGL |
b |
8-битовое целое |
signed char | GLbyte |
s |
16-битовое целое |
short | GLshort |
Суффикс |
Описание |
Tun e C |
Типы в OpenGL |
i |
32-битовое целое |
long | GLint, GLsizei |
f |
32-битовое число с плавающей точкой |
float | GLfloat, GLclampf |
d |
64-битовое число с плавающей точкой |
double | GLdouble, GLclampd |
ub |
8-битовое беззнаковое целое |
unsigned char | GLubyte, GLboolean |
us |
16-битовое беззнаковое целое |
unsigned short | GLushort |
ui |
32-битовое беззнаковое целое |
unsigned long | GLUint, GLenum, GLbitfield |
void | GLvoid |
Некоторые команды OpenGL оканчиваются на букву v, что говорит о том, что команда получает указатель на массив значений, а не сами эти значения в виде отдельных параметров. Многие команды имеют как векторные, так и невекторные версии, например конструкции
glColor3f (1.0, 1.0, 1.0);
и
GLfloat color [] = { 1.0, 1.0, 1.0 }; glColor3fv ( color ) ;
полностью эквивалентны.
OpenGL можно рассматривать как машину, находящуюся в одном из нескольких состояний {Finite State Machine, FSM). Внутри OpenGL содержится целый ряд переменных, например текущий цвет, текущее значение вектора нормали, способ наложения текстуры и т. п. Можно установить текущий цвет, и все последующие объекты будут использовать этот цвет, до тех пор, пока текущий цвет не будет изменен. Каждая системная переменная имеет свое значение по умолчанию и в любой момент времени можно узнать значение каждой из этих переменных. Обычно для этого используется одна из следующих функций: glGetBooleanv, glGetDoublev, glGet-Floatv и glGetlntergerv. Для определения значения некоторых переменных служат специальные функции.