我正在研究Qt / openGL,我有一些问题需要激活我的深度缓冲区。
在每一帧,我激活以下状态: glEnable(GL_DEPTH_TEST); glDepthFunc(GL_LEQUAL);
另外,我检查了深度缓冲区的大小是否为空(glGetIntegerv(GL_DEPTH_BITS)给出了24,这是预期的值) 但深度测试不起作用,深度测试应丢弃的一些片段不是。
有什么想法吗?
答案 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解决了我的问题。