Qt OpenGL:深度测试不起作用



我正在处理Qt/openGL,在激活深度缓冲区时遇到了一些问题。

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

另外,我检查了深度缓冲区的大小是否为空(glGetIntegrv(GL_depth_BITS)给了我24,这是预期值)然而,深度测试不起作用,一些应该通过深度测试丢弃的碎片也不起作用。

知道吗?

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

我安装了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); 

一切都在运转!

EDIT:实际上,必须在每一帧上激活状态,才能正确渲染

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

最新更新