OpenTK / OpenGL中的深度测试问题

时间:2014-10-20 20:46:56

标签: opengl opentk

我努力让我的深度测试在应用中正常运行。

深度似乎完全基于绘制顺序,如下所示: 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);

我认为启用深度测试可以使其正常工作。

出了什么问题?

1 个答案:

答案 0 :(得分:0)

设置GL.DepthFunc(DepthFunction.Always);会让事情出错。这告诉GL永远不会丢弃碎片,即使它们位于先前绘制的对象后面。您应该使用GL_LESSGL_LEQUAL比较模式。