GL_POLYGON_SMOOTH的白色像素

时间:2013-08-25 20:49:51

标签: java opengl polygon lwjgl

我遇到一个问题,就是在OpenGL中的对象上随机出现白色像素(有点)。 This是正在发生的事情的一个例子。在为可能遇到此问题的其他人搜索Stack Overflow时,我发现GL_POLYGON_SMOOTH不值得启用。我禁用了它,斑点消失了(这对我很幸运)。这很幸运,但我仍然不明白为什么启用GL_POLYGON_SMOOTH会创建这些神器。有人能解释他们出现的原因吗?另请注意,我已经glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)了。

1 个答案:

答案 0 :(得分:2)

GL_POLYGON_SMOOTH是选择性抗锯齿,而不是完全抗锯齿(如MSAA或SSAA)。

这里的真正问题基本上是通过将光栅化多边形的轮廓边与帧缓冲区中已有的像素混合来实现的。它依赖于顺序,因此除非您的多边形是完全深度排序的(在这种情况下您不需要深度缓冲区),否则它不会产生完美的结果。即使你确实把所有东西都完美地排序了,但在许多场景中,这需要透支的数量是荒谬的。

现在首选多重采样抗锯齿,它避免了顺序依赖性问题,您可以更好地控制质量与性能,并且您可以使用多重采样纹理实际自行实现。 GL_POLYGON_SMOOTH有一个质量提示(快速/好),就是这样。