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
个案例中,我希望在深度缓冲区中出现漏洞。
答案 0 :(得分:1)
你的陈述说" OpenGL ES 2.0无法写入Depth Buffer"有点误导。只要当前帧缓冲区中有深度缓冲区,并且启用了深度缓冲区写入,它就会写入深度缓冲区。
片段着色器中没有可写的gl_FragDepth
变量意味着您无法修改片段着色器中的深度值。它始终是写入深度缓冲区的传入深度值。
如果discard
是片段,则不会写入颜色和深度值。所以,是的,如果丢弃一个片段,则不会为该片段修改深度缓冲区。