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

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

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

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

1.7. Рисование геометрических фигур

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

Обзор операций в OpenGL

Рис. 1.1. Обзор операций в OpenGL

От конкретных реализаций OpenGL не требуется в точности следовать определенному стандартом порядку выполнения операций. Единственное, чего нужно добиваться, - соответствия результатов рендеринга в разных реализациях. Из множества новаторских программных и аппаратных архитектур, которые реализуют OpenGL, ни одна не дает результаты, полностью не соответствующие тому, что изображено па рис. 1.1. Несмотря на это, диаграмма может помочь читателю понять процесс рендеринга в OpenGL в целом, даже если отдельные реализации работают немного иначе.


⇐ Предыдущая| |Следующая ⇒