Opengl es glEnable(GL_深度_测试)不工作?

Opengl es glEnable(GL_深度_测试)不工作?,opengl-es,opengl-es-2.0,opengl-es-1.1,Opengl Es,Opengl Es 2.0,Opengl Es 1.1,当我在opengl es中启用照明时,我突然发现深度测试无法工作。旋转一段时间后,某些对象看起来是透明的。从这个角度看,手柄应该是不可见的 我在开始时使用glEnable(GL_深度_测试) 我正在使用OpenGLES2.0 有什么不对劲吗 当我不用灯光时,一切看起来都很好 确实要在渲染之前清除深度缓冲区吗 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 编辑: 还要检查是否确实从窗口API激活了深度帧缓冲区 例如,如果您使用GLUT,则

当我在opengl es中启用照明时,我突然发现深度测试无法工作。旋转一段时间后,某些对象看起来是透明的。从这个角度看,手柄应该是不可见的

我在开始时使用glEnable(GL_深度_测试)

我正在使用OpenGLES2.0

有什么不对劲吗

当我不用灯光时,一切看起来都很好


确实要在渲染之前清除深度缓冲区吗

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
编辑:

还要检查是否确实从窗口API激活了深度帧缓冲区

例如,如果您使用GLUT,则在调用
glutInitDisplayMode
时,必须提供
GLUT\u DEPTH
作为参数。

调用此选项:

gl.glDepthMask( true );

我花了一天的时间来解决这个问题:)

是的,在渲染之前我有这个问题,但我仍然得到了相同的结果。顺便说一句,我正在使用VBO进行绘制。这可能是因为用户问题,例如:您是否真的从窗口API激活了深度帧缓冲区?例如,如果使用GLUT,则在调用glutInitDisplayMode时,必须提供GLUT_深度作为参数。@AdamLee:如果渲染到FBO,请确保FBO具有深度附件。渲染到FBO时,将不使用默认帧缓冲区中的深度缓冲区。您需要创建深度渲染缓冲区,并将其附着到FBO。