OpenGL представляет собой программный интерфейс к графическому оборудованию (хотя существуют и чисто программные реализации OpenGL). Интерфейс насчитывает около 120 различных команд, которые программист использует для задания объектов и операций над ними (необходимых для написания интерактивных трехмерных приложений).
OpenGL был разработан как эффективный, аппаратно-независимый интерфейс, пригодный для реализации на различных аппаратных платформах. Поэтому OpenGL не включает в себя никаких специальных команд для работы с окнами или ввода информации от пользователя.
OpenGL позволяет:
1. Создавать объекты из геометрических примитивов (точки, линии, грани и битовые изображения).
2. Располагать объекты в трехмерном пространстве и выбирать способ и параметры проектирования.
3. Вычислять цвет всех объектов. Цвет может быть как явно задан, так и вычисляться с учетом источников света, параметров освещения, текстур.
4. Переводит математическое описание объектов и связанной с ними информации о цвете в изображение на экране.
При этом OpenGL может осуществлять дополнительные операции, такие, как Удаление невидимых фрагментов изображения.
Команды OpenGL реализованы как модель клиент-сервер. Приложение выступает в роли клиента - оно вырабатывает команды, а сервер OpenGL интерпретирует
Компьютерная графика. Полигональные модели и выполняет их. Сам сервер может находиться как на том же компьютере, на котором находится и клиент, так и на другом.
Хотя OpenGL и поддерживает палитровые режимы, мы их рассматривать не будем, считая, что работа ведется в режиме непосредственного задания цвета (HiColor или TrueColor).
Все команды (процедуры и функции) OpenGL начинаются с префикса gl, а все константы - с префикса GL_. Кроме того, в имена функций и процедур OpenGL входят суффиксы, несущие информацию о числе передаваемых параметров и их типе. В таблице приводятся вводимые OpenGL типы данных, стандартные типы языка С, которым они соответствуют, и суффиксы, которые им соответствуют.
Суффикс |
Описание |
Tun e C |
Тип в OpenGL |
b |
8-битовое целое |
signed char | GLbyte |
s |
16-битовое целое |
short | GLshort |
і |
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. Это говорит о том, что команда получает указатель на массив значений, а не сами эти значения в виде отдельных параметров. Многие команды имеют как векторные, так и не векторные