иповий
відповідний
тип даних мови
програмування
З
Визначення
типів даних
бібліотеки
OpenGL
8-розрядне ціле
signed char
GLbyte
16-розрядне ціле
short
GLshort
32-розрядне ціле
Int або long
GLint, GLsizei
32-розрядне число
з плаваючою точкою
float
GLfloat, GLclampf
64-розрядне число
з плаваючою точкою
double
GLdouble, GLclampd
8-розрядне беззнакове ціле
unsigned char
GLubyte, GLboolean
16-розрядне беззнакове ціле
unsigned short
GLushort
32-розрядне беззнакове ціле
unsignedint або
unsigned long
GLuint, GLenum, GLbitfield
Таблиця 1.1 Суфікси найменувань команд і типи даних параметрів
Таким чином, дві команди
glVertex2i (1,3); glVertex2f (1.0, 3.0);
є еквівалентними, за винятком того, що перша з них визначає координати вершини як 32-розрядні цілі числа, а друга визначають їх як числа з плаваючої крапкою з одинарною точністю.
Назви деяких команд бібліотеки OpenGL можуть мати заключний символ v, який вказує на те, що дана команда бере покажчик на вектор (або масив) значень, а не набір індивідуальних параметрів. Багато команд мають як векторні, так і невекторние версії, але деякі команди приймають тільки індивідуальні параметри, тоді як інші команди вимагають, щоб, по крайней міру, деякі з їхніх параметрів були визначені як вектори. Наступні рядки показують, як можна було б використовувати векторну і невекторную версію команди, що встановлює поточний цвет:
glColor3f (1.0, 0.0, 0.0);
gLfloat color_array [] = {1.0, 0.0, 0.0); glColor3fv (color_array);
Нарешті, бібліотека OpenGL визначає тип даних GLvoid. Цей тип даних найбільш часто використовується для тих команд бібліотеки OpenGL, які приймають як параметрів покажчики на масиви значень.
1.3 OpenGL як кінцевий автомат
Графічна система OpenGL являє собою кінцевий автомат. Ви переводите цей автомат в різні стани (або режими), які потім залишаються в силі доти, поки ви не зміните їх. Як вже було показано вище, поточний колір являє собою змінну стану. Можна встановити в якості поточного білий, червоний, або будь-який інший колір, і після цього кожен об'єкт буде виводитися на екран з цим кольором доти, доки ви не встановите для поточного кольору якесь інше значення. Поточний колір є лише однією з безлічі змінних стану, які підтримує бібліотека OpenGL. Інші змінні стану керують такими речами, як поточна візуалізація та перетворення проекції, шаблони штрихування ліній і багатокутників, режими виведення багатокутників на екран, угоди щодо упаковки пікселів, місце розташування і характеристики джерел освітлення, а також властивості матеріалів об'єктів, що виводяться на екран. Безліч змінних стану відносяться до режимів, які включаються або відключаються за допомогою команд glEnable () або glDisable () відповідно.
Кожна змінна стану або режим мають значення за замовчуванням, і в будь-який момент часу можна запросити у системи поточні значення кожної з цих змінних. Як правило, для цього використовується одна з шести команд, що перелічені далі: glGetBooleanv (), glGetDoubIev (), glGetFloatv (), glGetlntegerv (), glGetPointerv () або gIIsEnabled (). To, яку з цих команд слід вибрати, залежить від того, в вигляді якого типу даних ви хочете отримати відповідь. Для деяких змінних стану використовуються більш конкретні команди запиту (такі як glGetLight * (), glGetError () або glGetPolygonStipple ()). Крім цього, можна зберегти набір змінних станів у стеці атрибутів за допомогою команд glPushAttrib () або gIPushCIientAttrib (), тимчасово змінити їх, а потім відновити значення цих змінних за допомогою команд glPopAttrib () або glPopClienlAttrib (). Для тимчасових змін стану необхідно використовувати саме ці команди, а не будь-які з команд запиту, так як вони більш ефективні.
1.4. Конвеєр візуалізації OpenGL
1.4.1. Конвеєр
Більшість р...