我努力让我的深度测试在应用中正常运行。
深度似乎完全基于绘制顺序,如下所示: https://www.youtube.com/watch?v=YErS_loJW7w&feature=youtu.be
你可以在视频中看到,Suzanne的点云位于Mesh模型的前面,但是当它旋转时它最终会在它后面。
我认为以下代码是相关的一切
// clear the render buffer....
GL.Enable(EnableCap.DepthTest);
GL.DepthMask(true);
GL.ClearColor(Color.Black);
GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);
// Render main 3d scene
GL.Enable(EnableCap.CullFace);
GL.CullFace(CullFaceMode.Back);
GL.Enable(EnableCap.DepthTest);
GL.Enable(EnableCap.DepthClamp);
GL.DepthFunc(DepthFunction.Always);
GL.DepthMask(true);
我认为启用深度测试可以使其正常工作。
出了什么问题?
答案 0 :(得分:0)
设置GL.DepthFunc(DepthFunction.Always);
会让事情出错。这告诉GL永远不会丢弃碎片,即使它们位于先前绘制的对象后面。您应该使用GL_LESS
或GL_LEQUAL
比较模式。