Поделиться через


Функция glPushAttrib

Отправляет стек атрибутов.

Синтаксис

void WINAPI glPushAttrib(
   GLbitfield mask
);

Параметры

mask

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

GL_ACCUM_BUFFER_BIT

Значение очистки буфера накопления

GL_COLOR_BUFFER_BIT

бит включения GL_ALPHA_TEST

Функция альфа-теста и ссылочные значения

бит включения GL_BLEND

Смешивание функций источника и назначения

бит включения GL_DITHER

параметр GL_DRAW_BUFFER

бит включения GL_LOGIC_OP

Функция логического операции

Цветовые и индексные режимы очистки значений

Цветовые и индексные маски для записи

GL_CURRENT_BIT

Текущий цвет RGBA

Текущий индекс цвета

Текущий нормальный вектор

Текущие координаты текстуры

Флаг GL_CURRENT_RASTER_POSITION_VALID текущей позиции растра

Цвет RGBA, связанный с текущей позицией растра

Индекс цвета, связанный с текущей позицией растра

Координаты текстуры, связанные с текущей позицией растра

флаг GL_EDGE_FLAG

GL_DEPTH_BUFFER_BIT

бит включения GL_DEPTH_TEST

Функция тестирования буфера глубины

Значение очистки буфера глубины

бит включения GL_DEPTH_WRITEMASK

GL_ENABLE_BIT

флаг GL_ALPHA_TEST

флаг GL_AUTO_NORMAL

флаг GL_BLEND

Включение битов для определяемых пользователем плоскостей обрезки

GL_COLOR_MATERIAL

флаг GL_CULL_FACE

флаг GL_DEPTH_TEST

Флаг GL_DITHER

флаг GL_FOG

GL_LIGHTi , где 0 <= i< GL_MAX_LIGHTS

флаг GL_LIGHTING

флаг GL_LINE_SMOOTH

флаг GL_LINE_STIPPLE

флаг GL_COLOR_LOGIC_OP

флаг GL_INDEX_LOGIC_OP

GL_MAP1_x, где x — тип карты

GL_MAP2_x, где x — тип карты

флаг GL_NORMALIZE

флаг GL_POINT_SMOOTH

флаг GL_POLYGON_OFFSET_LINE

Флаг GL_POLYGON_OFFSET_FILL

флаг GL_POLYGON_OFFSET_POINT

флаг GL_POLYGON_SMOOTH

флаг GL_POLYGON_STIPPLE

флаг GL_SCISSOR_TEST

флаг GL_STENCIL_TEST

флаг GL_TEXTURE_1D

флаг GL_TEXTURE_2D

Флаги GL_TEXTURE_GEN_x, где x — S, T, R или Q

GL_EVAL_BIT

GL_MAP1_x включить биты, где x — это тип карты

GL_MAP2_x включить биты, где x — это тип карты

Конечные точки и деления 1-D сетки

Конечные точки и деления 2-D сетки

бит включения GL_AUTO_NORMAL

GL_FOG_BIT

GL_FOG включить флаг

Цвет тумана

Плотность тумана

Начало линейного тумана

Линейный конец тумана

Индекс тумана

значение GL_FOG_MODE

GL_HINT_BIT

параметр GL_PERSPECTIVE_CORRECTION_HINT

параметр GL_POINT_SMOOTH_HINT

параметр GL_LINE_SMOOTH_HINT

параметр GL_POLYGON_SMOOTH_HINT

параметр GL_FOG_HINT

GL_LIGHTING_BIT

бит включения GL_COLOR_MATERIAL

значение GL_COLOR_MATERIAL_FACE

Параметры цветного материала, отслеживающие текущий цвет

Цвет окружающей сцены

значение GL_LIGHT_MODEL_LOCAL_VIEWER

параметр GL_LIGHT_MODEL_TWO_SIDE

бит включения GL_LIGHTING

Включить бит для каждого индикатора

Интенсивность окружающего, диффузного и зеркального освещения для каждого света

Направление, положение, экспоненты и угол отсечения для каждого света

Константные, линейные и квадратитические коэффициенты затухания для каждого света

Внешний, диффузный, зеркальный и испускающий цвет для каждого материала

Индексы внешнего, диффузного и зеркального цвета для каждого материала

Зричная экспонента для каждого GL_SHADE_MODEL параметра материала

GL_LINE_BIT

флаг GL_LINE_SMOOTH

бит включения GL_LINE_STIPPLE

Шаблон прогона линии и счетчик повтора

Толщина линии

GL_LIST_BIT

параметр GL_LIST_BASE

GL_PIXEL_MODE_BIT

параметры GL_RED_BIAS и GL_RED_SCALE

значения GL_GREEN_BIAS и GL_GREEN_SCALE

GL_BLUE_BIAS и GL_BLUE_SCALE

GL_ALPHA_BIAS и GL_ALPHA_SCALE

GL_DEPTH_BIAS и GL_DEPTH_SCALE

значения GL_INDEX_OFFSET и GL_INDEX_SHIFT

флаги GL_MAP_COLOR и GL_MAP_STENCIL

факторы GL_ZOOM_X и GL_ZOOM_Y

параметр GL_READ_BUFFER

GL_POINT_BIT

флаг GL_POINT_SMOOTH

Размер точки

GL_POLYGON_BIT

бит включения GL_CULL_FACE

значение GL_CULL_FACE_MODE

индикатор GL_FRONT_FACE

параметр GL_POLYGON_MODE

флаг GL_POLYGON_SMOOTH

бит включения GL_POLYGON_STIPPLE

Флаг GL_POLYGON_OFFSET_FILL

флаг GL_POLYGON_OFFSET_LINE

флаг GL_POLYGON_OFFSET_POINT

GL_POLYGON_OFFSET_FACTOR

GL_POLYGON_OFFSET_UNITS

GL_POLYGON_STIPPLE_BIT

Изображение многоугольника

GL_SCISSOR_BIT

флаг GL_SCISSOR_TEST

Ножницы

GL_STENCIL_BUFFER_BIT

бит включения GL_STENCIL_TEST

Функция набора элементов и ссылочные значения

Маска значений набора элементов

Действия сбоем набора элементов, передачей и передачей буфера глубины

Прозрачное значение буфера набора элементов

Маска записи в буфер трафарета

GL_TEXTURE_BIT

Включение битов для четырех координат текстуры

Цвет границы для каждого изображения текстуры

Функция минификации для каждого изображения текстуры

Функция увеличения для каждого изображения текстуры

Координаты текстуры и режим переноса для каждого изображения текстуры

Цвет и режим для каждой среды текстуры

Включить биты GL_TEXTURE_GEN_x; x — S, T, R и Q.

параметр GL_TEXTURE_GEN_MODE для S, T, R и Q

Уравнения плоскости glTexGen для S, T, R и Q

GL_TRANSFORM_BIT

Коэффициенты шести отсеченных плоскостей

Включение битов для определяемых пользователем плоскостей обрезки

GL_MATRIX_MODE значение

флаг GL_NORMALIZE

GL_VIEWPORT_BIT

Диапазон глубин (ближний и дальний)

Источник окна просмотра и экстент

Возвращаемое значение

Эта функция не возвращает значение.

Коды ошибок

Следующие коды ошибок могут быть получены функцией glGetError .

Имя Значение
GL_STACK_OVERFLOW
Функция была вызвана при заполнении стека атрибутов.
GL_INVALID_OPERATION
Функция была вызвана между вызовом glBegin и соответствующим вызовом glEnd.

Комментарии

Функция glPushAttrib принимает один аргумент, маску, которая указывает, какие группы переменных состояния следует сохранить в стеке атрибутов. Символические константы используются для задания битов в маске. Параметр mask обычно создается путем применения логической операции OR к нескольким из этих констант. Для сохранения всех состояний стека можно использовать специальную маску GL_ALL_ATTRIB_BITS.

Функция glPopAttrib восстанавливает значения переменных состояния, сохраненные с помощью последней команды glPushAttrib . Те, которые не сохранены, остаются без изменений.

Это ошибка при отправке атрибутов в полный стек или при выводе атрибутов из пустого стека. В любом случае флаг ошибки установлен, и никакие другие изменения не вносятся в состояние OpenGL.

Изначально стек атрибутов пуст.

Не все значения состояния OpenGL можно сохранить в стеке атрибутов. Например, нельзя сохранить пакет пикселей и распаковать состояние, состояние режима отрисовки, а также состояние выбора и обратной связи.

Глубина стека атрибутов зависит от реализации, но она должна быть не менее 16.

Следующие функции извлекают сведения, связанные с glPushAttrib и glPopAttrib:

glGet с аргументом GL_ATTRIB_STACK_DEPTH

glGet с аргументом GL_MAX_ATTRIB_STACK_DEPTH

Требования

Требование Значение
Минимальная версия клиента
Windows 2000 Professional [только классические приложения]
Минимальная версия сервера
Windows 2000 Server [только классические приложения]
Заголовок
Gl.h
Библиотека
Opengl32.lib
DLL
Opengl32.dll

См. также раздел

glBegin

glEnd

glGet

glGetClipPlane

glGetError

glGetLight

glGetMap

glGetMaterial

glGetPixelMap

glGetPolygonStipple

glGetString

glGetTexEnv

glGetTexGen

glGetTexImage

glGetTexLevelParameter

glGetTexParameter

glIsEnabled