glsl es 2.0 discard and depth buffer

时间:2014-07-01 19:50:49

标签: opengl-es depth-buffer

OpenGL ES 2.0无法写入深度缓冲区,因为它没有gl_FragDepth,但如果我discard - 它会影响深度缓冲区(我的意思是,不是用CURRENT gl_FragCoord.z覆盖它,但保持原样)?

这样的事情:

void main() {
   if (sin(x) > 0.5 ){
      discard;
   } else {
      gl_FragColor = (1.0, 1.0, 1.0, 1.0);
   }
}

discard个案例中,我希望在深度缓冲区中出现漏洞。

1 个答案:

答案 0 :(得分:1)

你的陈述说" OpenGL ES 2.0无法写入Depth Buffer"有点误导。只要当前帧缓冲区中有深度缓冲区,并且启用了深度缓冲区写入,它就会写入深度缓冲区。

片段着色器中没有可写的gl_FragDepth变量意味着您无法修改片段着色器中的深度值。它始终是写入深度缓冲区的传入深度值。

如果discard是片段,则不会写入颜色和深度值。所以,是的,如果丢弃一个片段,则不会为该片段修改深度缓冲区。