在启用深度测试后,线条会显示为分段

时间:2015-05-24 17:16:38

标签: opengl

如果我在OpenGL中绘制一系列线段,其中每个线段都很小,则生成的线看起来很平滑且没有中断。但是,如果我使用

启用深度测试
glEnable(GL_DEPTH_TEST);
glDepthMask(GL_TRUE);

然后该行显示为断开的段,而不是平滑的。我的应用程序需要进行深度测试。有没有办法通过深度测试保留平滑的线条图?

1 个答案:

答案 0 :(得分:4)

如评论中所述,如果您使用GL_LINE_SMOOTH,则可能是预期的行为。由于使用它,线条试图绘制超出实际"线"的像素。如果您的线条在那个位置重叠,您将得到一个分段线,因为不符合图纸的Z顺序。

我想到的一个简单的解决方案是首先用深度测试和深度写入绘制整个场景。然后绘制线条,保持深度测试,但禁止写入深度缓冲区。通过这种方式,您只能在场景中测试您的线条,而不是相互对抗,您可以保持"平滑"看看你没有深度测试。