Сохранение параметров Поскольку при работе с OpenGL часто возникает необходимость в изменении состояния OpenGL (параметры вывода, типы осуществляемых проверок и т. п.), то весьма удобной является возможность запоминать текущее состояние определенных параметров в стеке (наподобие стека матриц) и восстанавливать состояние потом.

Для запоминания ряда параметров служит функция

void glPùshAttrib ( GLbitfield mask );

Параметр mask задает типы параметров текущего состояния, которые должны быть сохранены этой командой. Наиболее распространенными значениями являются GL_COLOR_B UFFER_BIT, GL_ENABLE_BIT, GL_DEPTH_BUFFER_Brr, GL_STENCIL_BUFFER_BIT и GL_TEXTURE_BiT. Полный список возможных битовых значений (вместе со списком сохраняемых ими параметров) можно найти в описании OpenGL.

Функция

void glPopAttrib О; восстанавливает состояние сохраненных параметров, снимая их со стека.

ОБЪЕКТНАЯ МОДЕЛЬ. ОСНОВНЫЕ КЛАССЫ

Поскольку в рассматриваемом нами проекте мы собираемся активно использовать принципы и приемы объектно-ориентированного программирования (ООП), то для облегчения дальнейшей работы удобно будет сразу определить применяемую объектную модель и основные классы.

Довольно часто в ООП смешиваются два близких понятия - абстрактные типы данных (АТД) и объекты. Если мы хотим построить удобную п расширяемую в дальнейшем объектную модель, то эти два понятия необходимо четко различать.

Под АТД обычно подразумевают объединение данных с методами для их обработки. Хотя при этим может встречаться наследование АТД, но их методы при этом не переопределяются, т. е. фактически АТД - это просто "объектная обертка" вокруг структуры. Простейшими примерами АТД являются введенные ранее классы Vector2D, Vector3D, Plane и т. п. Полиморфизм в случае АТД практически отсутствует и вызываемые методы одно-шачно определяются на этапе компиляции.

С другой стороны, часто встречается необходимость в полиморфизме, наследовании и переопределении методов объектов непосредственно па стадии выполнения программы. Например, в конструкции


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