我正在Qt / openGL上工作,但是在激活深度缓冲区时遇到了一些问题。
在每一帧,我都会激活以下状态:glEnable(GL_DEPTH_TEST); glDepthFunc(GL_LEQUAL);
另外,我检查了深度缓冲区的大小是否不为空(glGetIntegerv(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);
一切正常!
编辑:实际上,必须在每帧进行状态激活才能正确渲染
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句