1.5. Состояние

Процесс обновления информации в буфере кадров в OpenGL построен по принципу конечного автомата. Преобразование графических примитивов, растровых и других изображений в пикселы на экране контролируется довольно большим количеством параметров состояния. Изменение одного параметра никак не влияет на другие. В целом параметры состояния определяют, как именно будет проводиться рендеринг и как примитивы преобразовываются в пикселы на экране.

Состояние OpenGL хранится в структуре данных, которая называется графическим. контекстом.. Часть функций для работы с графическими контекстами предоставляется API оконной системы. В число таких функций входит создание и удаление графических контекстов, а также назначение текущего графического контекста и буфера кадров, применительно к которым будут выполняться последующие OpenGL-команды.

Существует довольно много серверных параметров OpenGL, имеющих всего два состояния: включено или выключено. Для изменения состояния конкретного параметра нужно передать соответствующую константу либо в команду gl Enable е, которая установит этот параметр в состояние «включено», либо в команду gl Di sabl е, которая установит этот параметр в состояние «выключено». Клиентские параметры (например, указатели для определения массивов вершин) могут быть включены вызовом gl ЕпаЫ еС1 i entState и выключены вызовом gl Di sabl еСl i entState.

Любые параметры состояния OpenGL-cepsepa можно сохранять в стеке функцией gl PushAttri b и извлекать функцией gl PopAttri b. У OpenGL-клиента есть свой стек, с которым можно работать посредством функций gl PushCl i entAttri b и gl PopCl i ent Attri b.

Параметры графического контекста можно получить функцией gl Get. Для простых параметров определены символические константы (например, GL_CURRENT_COLOR, GL_L INE_WIDTH и т. п.). Эти значения передаются как аргументы в gl Get, а возвращаются текущие значения указанного параметра графического контекста. Есть несколько разных функций gl Get, которые возвращают integer, float, double или bool еап. Более сложные значения получают с помощью функций с приставкой get, каждая из которых возвращает определенный тип, например gl GetCl i рРl ane, gl Get Light, glGetMaterial и т. п. Функция gl Get Error возвращает тип ошибки.

1.6. Конвейер операций

В OpenGL определено много операций, которые должны применяться одна за другой, в определенном порядке. Поэтому в стандарте есть правила, которые определяют последовательность обработки графических данных в OpenGL.

В OpenGL, до версии 1.5 включительно, определен набор операций, которые можно назвать базовой функциональностью (рис. 1.1). Так OpenGL работает с выхода первой его версии. Это упрощенное представление о том, как он работает и сейчас. Правда, в новых версиях появились некоторые новые функции, но базовая архитектура сохранилась. Термин «базовая функциональность» здесь используется потому, что любая реализация OpenGL, выполняя операции, должна получать результат, соответствующий стандарту. И набор операций, и последовательность их выполнения определены в стандарте.


⇐ вернуться назад | | далее ⇒