2009-08-13 96 views
1

GL_POLYGON未正確填充?

爲什麼這些線條出現在我的形狀中?

我初始化OpenGL的是這樣的:

glDisable(GL_TEXTURE_2D); 
glDisable(GL_DEPTH_TEST); 
glDisable(GL_COLOR_MATERIAL); 
glEnable(GL_BLEND); 
glEnable(GL_POLYGON_SMOOTH); 
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 
glClearColor(0, 0, 0, 0); 

並繪製形狀這樣的:

glClear(GL_COLOR_BUFFER_BIT); 
glColor3f(1, 0, 0); 
glBegin(GL_POLYGON); 
    glVertex2f(-5, -5); // bottom left 
    glVertex2f(5, -5); // bottom right... 
    glVertex2f(6, 0); 
    glVertex2f(5, 5); 
    glVertex2f(-5, 5); 
glEnd(); 

,如果它是順時針或逆時針無所謂。

回答

3

GL_POLYGON_SMOOTH很多例子是多邊形抗鋸齒的過時的和緩慢的方法。這也會導致你在上面看到的問題。

使用多重採樣緩衝區擴展是現代計算機上執行快速抗混疊的最佳方式。閱讀全文here.

+0

花了我一會兒來弄清楚如何啓用多重採樣,但我得到它的工作。這工作得很好:)謝謝, – mpen 2009-08-14 03:06:30

3

我想禁用GL_POLYGON_SMOOTH會解決這個問題,但你會失去抗鋸齒。 FSAA可以作爲替代方案,但速度會更慢。

編輯:環顧四周,有有使用glBlendFunc(GL_SRC_ALPHA_SATURATE, GL_ONE);

+0

禁用GL_POLYGON_SMOOTH確實修復了它。後一種解決方案使它完全消失。有沒有幸福的中位數? – mpen 2009-08-13 04:26:01