glStencilFunc 函数

glStencilFunc 函数设置模具测试的函数和引用值。

语法

void WINAPI glStencilFunc(
   GLenum func,
   GLint  ref,
   GLuint mask
);

参数

func

测试函数。 以下八个令牌有效。

含义
GL_NEVER
始终失败。
GL_LESS
如果 (ref&掩码) (<模具&掩码) 传递。
GL_LEQUAL
如果 (ref&掩码) = (模具掩码&) ,则传递 。
GL_GREATER
如果 (ref&掩码) (>模具&掩码) 传递。
GL_GEQUAL
如果 (ref&掩码) = (模具掩码&) ,则传递 。
GL_EQUAL
如果 (ref&掩码) = (模具掩码&) ,则传递 。
GL_NOTEQUAL
是否 (ref&掩码) 传递? (模具&掩码) 。
GL_ALWAYS
始终通过。

ref

模具测试的引用值。 ref 参数固定在 [0, 2n 1] 范围内,其中 n 是模具缓冲区中的位平面数。

mask

测试完成后,使用引用值和存储的模具值进行 AND的掩码。

返回值

此函数不返回值。

错误代码

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

名称 含义
GL_INVALID_ENUM
func 不是八个接受的值之一。
GL_INVALID_OPERATION
函数是在 对 glBegin 的调用和对 glEnd 的相应调用之间调用的。

备注

z 缓冲一样,Stenciling 基于每个像素启用和禁用绘图。 使用 OpenGL 绘图基元绘制到模具平面中,然后使用模具平面来屏蔽屏幕部分,然后呈现几何图形和图像。 Stenciling 通常用于多通道渲染算法,以实现特殊效果,例如贴纸、大纲和建设性的实心几何图形渲染。

模具测试根据参考值与模具缓冲区中的值之间的比较结果有条件地消除像素。 测试由 glEnableglDisable 启用,参数GL_STENCIL_TEST。 根据模具测试结果执行的操作是使用 glStencilOp 指定的。

func 参数是确定模具比较函数的符号常量。 它接受上面所示的八个值之一。 ref 参数是在模具比较中使用的整数引用值。 它被固定到 [0, 2n 1] 范围,其中 n 是模具缓冲区中的位平面数。 mask 参数使用引用值和存储的模具值进行按位 AND处理,ANDed 值参与比较。

如果 模具 表示存储在相应模具缓冲区位置中的值,则前面的列表将显示 func 可以指定的每个比较函数的效果。 仅当比较成功时,才会将像素传递到光栅化过程中的下一阶段, (看到 glStencilOp) 。 所有测试将 模具 值视为 [0, 2n 1] 范围内的无符号整数,其中 n 是模具缓冲区中的位平面数。

最初禁用模具测试。 如果没有模具缓冲区,则不会进行模具修改,就好像模具测试始终通过一样。

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

带参数GL_STENCIL_FUNC的 glGet

带参数GL_STENCIL_VALUE_MASK的 glGet

带参数GL_STENCIL_REF的 glGet

带参数GL_STENCIL_BITS的 glGet

带参数GL_STENCIL_TEST的 glIsEnabled

要求

要求
最低受支持的客户端
Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器
Windows 2000 Server [仅限桌面应用]
标头
Gl.h

Opengl32.lib
DLL
Opengl32.dll

请参阅

glAlphaFunc

glBegin

glBlendFunc

glDepthFunc

glEnable

glEnd

glIsEnabled

glLogicOp

glStencilOp