OpenGL:清除模板缓冲区,除了某些位?

安妮·奎因

我正在使用模板缓冲区进行两项工作。第一个是允许进行遮罩,第二个是为可以“看到”的对象编写遮罩。在这种特殊情况下,保留位是0x80字节中的最后一位,其余保留用于常规屏蔽。

第一个目的要求在使用大约127次后清除缓冲区,否则测试时过去的模板将再次变为“有效”,因为该值必须回退为1。第二个目的要求缓冲区中的保留位保持有效状态整个框架。

有什么方法可以清除整个模板缓冲区,同时保留保留位的设置?

雷托·科拉迪(Reto Koradi)

您评论中的理论是正确的。glStencilMask()应用于glClear()写入的值glClearBuffer()

在OpenGL 4.5规范的“ 17.4.3清除缓冲区”部分中(添加了重点):

调用Clear时,唯一应用的每片段操作(如果启用)是像素所有权测试,剪刀测试,sRGB转换(请参阅第17.3.9节)和抖动。也适用第17.4.2节中描述的掩蔽操作。

其中第17.4.2节的标题为“缓冲区更新的精细控制”,其中包括的文档glStencilMask()对于glStencilMaskSeparate(),它是的更通用的版本glStencilMask(),甚至明确表示:

由正面图元生成的片段使用前遮罩,而由背面图元生成的片段使用后遮罩(请参阅第17.3.5节)。清除模板缓冲区时,清除操作始终使用前模板写掩码。

因此,要清除模板缓冲区的低7位,可以使用:

glStencilMask(0x7f);
glClear(GL_STENCIL_BUFFER_BIT);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Python中的Memset(),清除缓冲区

来自分类Dev

C ++中的位缓冲区

来自分类Dev

OpenGL中的缓冲区绘图

来自分类Dev

OpenGL模板缓冲区,它们的支持程度如何?

来自分类Dev

清除键盘缓冲区

来自分类Dev

何时清除顶点缓冲区对象

来自分类Dev

NodeJS缓冲区从字节读取位

来自分类Dev

OpenGL ES2.0将8位图像加载到模板缓冲区中

来自分类Dev

OpenGL GL_COLOR_BUFFER_BIT属性位是否表示深度和模板缓冲区相关的状态?

来自分类Dev

OpenGL复制顶点缓冲区对象

来自分类Dev

如何增加OpenGL缓冲区?

来自分类Dev

如何清除ReplaySubject上的缓冲区?

来自分类Dev

清除cout缓冲区(C ++)

来自分类Dev

在OpenGL中清除双精度缓冲区

来自分类Dev

强制在scanf中清除缓冲区

来自分类Dev

OpenGL缓冲区问题

来自分类Dev

清除MIDI输出缓冲区

来自分类Dev

OpenGL 16位模板缓冲区?

来自分类Dev

使用立方体贴图时的OpenGL清除缓冲区

来自分类Dev

Python中的Memset(),清除缓冲区

来自分类Dev

在操作textarea之后清除了JavaScript撤消缓冲区

来自分类Dev

在金属中如何清除深度缓冲区或模板缓冲区?

来自分类Dev

Python:清除标准输入缓冲区

来自分类Dev

何时清除顶点缓冲区对象

来自分类Dev

OpenGL ES2.0将8位图像加载到模板缓冲区中

来自分类Dev

3位数字的缓冲区

来自分类Dev

如何清除Neovim缓冲区

来自分类Dev

为什么使用EOF检查是否清除了stdin缓冲区

来自分类Dev

Tmux,禁用缓冲区清除功能