1

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

4

1 回答 1

2

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

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

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

于 2013-08-25T21:29:20.547 回答