从片段着色器内部影响深度或模板缓冲区?

时间:2011-08-26 20:37:22

标签: c++ glsl fragment-shader depth-buffer stencil-buffer

我知道可以通过写入gl_FragDepth来控制写入GLSL深度缓冲区的内容,但是可以写入模板缓冲区吗?

另外,我可以从片段着色器中完全取消像素写入,就像像素模板或深度测试失败一样吗?

由于

1 个答案:

答案 0 :(得分:4)

如果使用正确的硬件,则可以写入模板缓冲区。所有Radeon HD硬件都可以使用AMD_stencil_shader_export。有一个ARB_stencil_shader_export,但我无法验证它是否特别普遍。

如果要阻止片段写入任何内容,可以使用discard。这有点像在概念上抛出异常(但不是行为)。