【发布时间】:2011-04-26 16:28:35
【问题描述】:
仅当当前像素的 alpha > 0.5 时,我才想写入 OpenGL 深度缓冲区 该怎么做?
如果像素的 alpha discard 不是我要找的,因为它丢弃了颜色和深度信息;我只想丢弃深度信息。
可以设置gl_FragDepth 变量,但设置为哪个值?
而对于 alpha gl_FragDepth 不变?
我必须为此使用 FBO,还是不需要它也可以工作? 我正在做的项目是一个 GLES 2.0 Android 项目
【问题讨论】:
-
我认为您不能一次性完成此操作,至少不能直接且效率不高。您当然可以将 gl_FragDepth 设置为会导致深度测试失败的值(例如 zfar),但这也会丢弃片段的颜色。使用不同的 alpha 测试进行两次通过,这应该可以工作...但是在 ES 上,您可能无法像这样再通过一次。
标签: android opengl-es glsl opengl-es-2.0