2013-08-25 40 views
1

我有一個問題,白色像素出現在OpenGL中的對象上隨機(排序)。 This是一個發生了什麼事情的例子。當爲其他可能遇到此問題的人搜索堆棧溢出時,我發現GL_POLYGON_SMOOTH不值得啓用。我禁用了它,這些斑點消失了(這對我來說是幸運的)。這非常幸運,但我仍不明白爲什麼啓用GL_POLYGON_SMOOTH創建這些神器。有人可以解釋他們爲什麼出現?還請注意,我有glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)正在進行。白色像素與GL_POLYGON_SMOOTH

回答

2

GL_POLYGON_SMOOTH是選擇性抗鋸齒,而不是fullscene抗鋸齒(如MSAA或SSAA)。

這裏真正的問題基本上是通過將光柵化多邊形的輪廓邊與幀緩衝區中已有的像素混合起來。它是依賴於順序的,所以除非你的多邊形是完全深度排序的(在這種情況下你不需要深度緩衝區),它不會產生完美的結果。而且,即使你確實已經將所有東西都完美地分類了,但在許多場景中,這種透支的數量將是荒謬的。

現在多采樣抗鋸齒是最好的選擇,它避免了順序依賴性的問題,您可以更好地控制質量與性能,您可以使用多重採樣紋理自己實現。 GL_POLYGON_SMOOTH有一個質量提示(快/很好),就是這樣。