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

时间:2013-03-11 07:36:24

标签: opengl opengl-es

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

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

深度缓冲设置正常:

glFramebufferRenderbuffer(GL_FRAMEBUFFER,
                              GL_DEPTH_ATTACHMENT,
                              GL_RENDERBUFFER,
                              m_depthRenderbuffer);

我绑定渲染缓冲区:

glBindRenderbuffer(GL_RENDERBUFFER, m_renderbuffer);

然后我渲染锥形:

enter image description here

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

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

glEnable(GL_DEPTH_TEST)

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

为什么会这样?

2 个答案:

答案 0 :(得分:7)

使用 GL_DEPTH_TEST 时,

必须在渲染之前调用

glClear(GL_DEPTH_BUFFER_BIT),以便正确初始化深度缓冲区。

答案 1 :(得分:0)

随着FuzzyTew在评论中提出(2017年4月26日),某些人可能会遇到以下问题:将近剪切距离设置为0。我将其设置为0.01 * cam_distance,而所有操作都花哨了。

[...]我附近的剪切距离设置为0。事实证明它必须为正。 – FuzzyTew 17年4月26日在20:25