2013-10-02 57 views
0

根据我读过模板测试的书籍是通过比较参考值与模板缓冲区对应像素的参考值来实现的,在其中一本书中它如何陈述:模板缓冲器和模板测试

A mask is bitwise AND-ed with the value in the stencil planes and with the reference value before the comparison is applied

在这里,我看到的第三参数,其是掩模,这是与模板缓冲区的掩模,或者它是由openGL的自身产生的另一个参数??

有人可以解释比较过程和values在这个过程中有作用??

回答

1

glStencilMask (...)用于启用或禁用写入模板缓冲区中的各个位。为了使参数数量可管理并适应不同位深的模板缓冲区,需要使用GLuint而不是单独的GLboolean,如glColorMask (...)glDepthMask (...)

通常情况下,模板缓冲区是8位宽,但不一定是。默认的模板掩模是这样的,每个位平面都被启用。在8位模板缓冲区中,这意味着默认掩码是0xff(11111111b)。另外,OpenGL 2.0+中的前/后面多边形可以单独进行模版印刷,因此在技术上有两个模板掩模。

在你的问题中,你可能指的是glStencilFunc (...),它也有一个掩码。该掩码不与模板缓冲区本身相关联,而是与实际的模板测试相关联。然而,原则是一样的。上面的链接详细说明了这个面具是如何与参考文献AND'd一起的。测试期间的价值。

1

蒙版是一个可选的额外部分,它位于呈现的内容和发送的内容之间。

想象一下,你有一个场景被渲染,你突然决定你不想让某个物体使用任何红色。您可以使用蒙版将位运算应用于对象影响的每个像素以删除红色值。

  • r:150 b:50 g:47成为r:0 b:50 g:47
  • r:13 b:255 g:255成为r:0 b:255 g:255

http://www.opengl.org/sdk/docs/man3/xhtml/glColorMask.xml应有助于解释多一点。