glGetFloatv (GL_CURRENT_COLOR, colorValues); Затем текущие цветовые компоненты передаются в массив colorValues. Чтобы найти целочисленные значения цветовых компонентов, вызывается функция glGetlntegerv. В некоторых случаях для возвращения заданного типа данных может понадобиться преобразование типа данных.
В этих функциях для возвращения текущих значения параметров состояния могут использоваться и другие константы OpenGL: GL_POINT_SIZE, GL_LINE_WIDTH или GL_CURRENT_RASTER_POSITION. Диапазон значений размеров точки или ширины линии, который поддерживается данной системой, можно проверить с помощью констант GL_POINT_SIZE_RANGE или GL_LINE_WIDTH_RANGE.
Независимо от того, что существует возможность извлекать и повторно использовать значения отдельных атрибутов с помощью функций glGet, в пакете OpenGL предлагаются и другие функции для сохранения групп атрибутов и повторного использования их значений. Применение этих функций для сохранения текущих настроек атрибутов мы рассмотрим в следующем разделе.
Существует еще много других параметров системы и состояния, относительно которых иногда нужно сделать запрос. Например, чтобы определить, сколько битов приходится в буфере кадра на один пиксель, можно запросить систему о том, сколько битов доступно для описания каждого отдельного цветового компонента:
glGetlntegerv (GL_RED_BITS, redBitSize); Здесь массиву redBitSize присваивается значение, равное количеству битов красного цвета, существующему в каждом из буферов (кадра, глубины, накопления и шаблонов). Аналогично можно сделать запрос относительно других цветовых компонентов, воспользовавшись параметрами GL_GREEN_BITS, GL_BLUE_BITS, GL_ALPHA_BITS или GL_INDEX_BITS.
Можно также узнать, установлены ли флаги сторон, помечена ли поверхность многоугольника как передняя или задняя, и поддерживает ли данная система двойную буферизацию. Также можно уточнить, активизированы ли такие процедуры, как смешивание цветов, наложение текстуры на линии или защита от наложения.
ГРУППЫ АТРИБУТОВ В OpenGL
Атрибуты и другие параметры состояния OpenGL образуют группы атрибутов. Каждая группа содержит набор взаимосвязанных параметров состояния. Например, в группе атрибутов точек содержатся такие параметры, как размер и уровень сглаживания (защиты от наложения) точки, а в группе атрибутов прямых линий содержится ширина, тип пунктира, узор пунктирного рисунка, счетчик повтора пунктирного рисунка и состояние сглаживания линии. Аналогично в группе атрибутов многоугольников содержится одиннадцать параметров многоугольника, таких как узор заполнения, флажок обозначения лицевой или обратной стороны и состояние сглаживания многоугольника. Поскольку цвет является атрибутом всех примитивов, он относится к своей группе атрибутов. Отметим, что некоторые параметры могут входить больше, чем в одну группу.
В пакете OpenGL существует более двадцати различных групп атрибутов, но все параметры одной или нескольких групп можно сохранять или изменять с помощью одной функции. Чтобы сохранить все параметры, которые относятся к заданной группе, используется следующая команда.