【问题标题】:glsl es 2.0 discard and depth bufferglsl es 2.0 丢弃和深度缓冲区
【发布时间】:2014-07-01 19:50:49
【问题描述】:

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 的情况下,我希望在深度缓冲区中出现漏洞。

【问题讨论】:

    标签: opengl-es depth-buffer


    【解决方案1】:

    您说“OpenGL ES 2.0 无法写入深度缓冲区”的说法有些误导。它将写入深度缓冲区,只要当前帧缓冲区中有深度缓冲区,并且启用了深度缓冲区写入。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多