glPushAttrib 函数

推送属性堆栈。

语法

void WINAPI glPushAttrib(
   GLbitfield mask
);

参数

mask

指示要保存的属性的掩码。 符号掩码常量及其关联的 OpenGL 状态如下所示, (缩进段落列表) 保存属性:

GL_ACCUM_BUFFER_BIT

累积缓冲区清除值

GL_COLOR_BUFFER_BIT

GL_ALPHA_TEST启用位

Alpha 测试函数和引用值

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 是映射类型

一维网格终结点和划分

二维网格终结点和划分

GL_AUTO_NORMAL启用位

GL_FOG_BIT

GL_FOG启用标志

雾色

雾密度

线性雾启动

线性雾端

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

多边形 stipple 图像

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

S、T、R 和 Q 的GL_TEXTURE_GEN_MODE设置

适用于 S、T、R 和 Q 的 glTexGen 平面公式

GL_TRANSFORM_BIT

六个剪裁平面的系数

为用户可定义的剪裁平面启用位

GL_MATRIX_MODE值

GL_NORMALIZE 标志

GL_VIEWPORT_BIT

近距和远) (深度范围

视区原点和范围

返回值

此函数不返回值。

错误代码

glGetError 函数可以检索以下错误代码。

名称 含义
GL_STACK_OVERFLOW
函数是在属性堆栈已满时调用的。
GL_INVALID_OPERATION
函数是在 对 glBegin 的调用和对 glEnd 的相应调用之间调用的。

备注

glPushAttrib 函数采用一个参数,一个掩码,指示在属性堆栈上保存哪些状态变量组。 符号常量用于在掩码中设置位。 掩码参数通常是通过将逻辑 OR 运算应用于其中几个常量来构造的。 可以使用特殊掩码GL_ALL_ATTRIB_BITS保存所有可堆叠状态。

glPopAttrib 函数还原使用最后一个 glPushAttrib 命令保存的状态变量的值。 未保存的将保持不变。

将属性推送到完整堆栈或从空堆栈中弹出属性是错误的。 在任一情况下,都设置了错误标志,并且不会对 OpenGL 状态进行其他更改。

最初,属性堆栈为空。

并非 OpenGL 状态的所有值都可以保存在属性堆栈上。 例如,无法保存像素包和解压缩状态、呈现模式状态以及选择和反馈状态。

属性堆栈的深度取决于实现,但它必须至少为 16。

以下函数检索与 glPushAttribglPopAttrib 相关的信息:

带参数GL_ATTRIB_STACK_DEPTH的 glGet

带参数GL_MAX_ATTRIB_STACK_DEPTH的 glGet

要求

要求
最低受支持的客户端
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