Qt OpenGL:深度测试不起作用

时间:2014-09-26 19:18:33

标签: qt opengl

我正在研究Qt / openGL,我有一些问题需要激活我的深度缓冲区。

在每一帧,我激活以下状态:     glEnable(GL_DEPTH_TEST);     glDepthFunc(GL_LEQUAL);

另外,我检查了深度缓冲区的大小是否为空(glGetIntegerv(GL_DEPTH_BITS)给出了24,这是预期的值) 但深度测试不起作用,深度测试应丢弃的一些片段不是。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

好的,所以问题解决了! 如果有人遇到同样的问题,这是我使用的方法。

我安装了GDebugger,并检查确实没有写入深度缓冲区。 我导出了openGL当前状态,这里是相对于深度测试的状态:

GL_DEPTH_BIAS=0
GL_DEPTH_BITS=24
GL_DEPTH_CLEAR_VALUE=2147482496
GL_DEPTH_FUNC=GL_LESS
GL_DEPTH_RANGE={0, 1}
GL_DEPTH_SCALE=1
GL_DEPTH_TEST=TRUE
GL_DEPTH_WRITEMASK=FALSE

除了GL_DEPTH_WRITEMASK之外,一切似乎都没问题。 我用以下方法激活它:

glDepthMask(GL_TRUE); 

一切正常!

编辑:实际上,必须在每一帧完成状态的激活才能正确渲染

答案 1 :(得分:0)

我遇到了同样的问题,在glClear函数中设置GL_DEPTH_BUFFER_BIT解决了我的问题。