启用深度测试不会显示任何内容

joh*_*ers 5 opengl opengl-es

我有一个深度缓冲区,并在屏幕上渲染一个锥形.它工作,但后来我意识到我忘记了深度测试的标准启用,当我打开它时,现在什么都没有出现.

在我的场景中,我只有这一个物体,一个圆锥体,所以在它前面没有别的东西.

深度缓冲区设置正常:

glFramebufferRenderbuffer(GL_FRAMEBUFFER,
                              GL_DEPTH_ATTACHMENT,
                              GL_RENDERBUFFER,
                              m_depthRenderbuffer);
Run Code Online (Sandbox Code Playgroud)

我绑定渲染缓冲区:

glBindRenderbuffer(GL_RENDERBUFFER, m_renderbuffer);
Run Code Online (Sandbox Code Playgroud)

然后我渲染锥体:

在此输入图像描述

(我对这个凌乱锥体的实验是我将要问的另一个问题的主题).

但是,只要在创建深度缓冲区并绑定渲染缓冲区后添加下一行:

glEnable(GL_DEPTH_TEST)

......然后我的锥体神奇地消失了.屏幕上什么都没有,甚至没有一点点.

那为什么会这样?

Dir*_*irk 7

使用GL_DEPTH_TEST时,

必须在渲染之前调用glClear(GL_DEPTH_BUFFER_BIT),以便正确初始化深度缓冲区.