我努力让深度测试在应用程序中正常工作。OpenTK/OpenGL深度测试问题
深度似乎是完全基于抽签顺序,在这里看到: https://www.youtube.com/watch?v=YErS_loJW7w&feature=youtu.be
您可以在视频中看到,苏珊的点云是在网格模型的前面,但旋转时,它结束了在它后面。
我认为下面的代码是相关
// 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);
我的印象是,启用深度测试将正确地做这项工作的一切。
怎么回事?
您在创建GL上下文时是否请求了一些深度缓冲区位?除非你问,否则你可能得不到。 – genpfault 2014-10-20 20:57:29
OpenGl对我来说是比较新的。我如何看?看看我使用的OpenTK GLControl的文档似乎表明提供了一个深度缓冲区。 “...请注意,GLControl提供了一个颜色和深度缓冲区,我们必须使用GL.Clear()来清除。” – Chris 2014-10-20 21:33:33