如何编写/阻止在GLSL中写入OpenGL深度缓冲区

j00*_*0hi 9 android opengl-es glsl opengl-es-2.0

我想写入OpenGL深度缓冲区只有当前像素的alpha> 0.5怎么做?

如果像素的alpha <0.5,我想渲染颜色但不将其深度写入深度缓冲区.这个命令discard不是我想要的,因为它丢弃了颜色和深度信息; 我只想丢弃深度信息.

gl_FragDepth可以设置的变量,但值是多少?而对于α<0.5的情况,如何gl_FragDepth保持不变?

我是否必须使用FBO,或者它是否也可以不使用?我正在开发的项目是GLES 2.0 Android项目

j00*_*0hi 17

我通过使用解决了这个问题

glDepthMask(false)
Run Code Online (Sandbox Code Playgroud)

此命令禁用写入深度缓冲区但仍执行深度测试.我只是在所有其他对象之后渲染我的透明对象,并得到我正在寻找的结果.