2010-01-08 31 views
3

我使用這些函數調用:如何讓多邊形抗鋸齒工作?

glEnable(GL_BLEND) 
glEnable(GL_POLYGON_SMOOTH) 
glBlendFunc(GL_SRC_ALPHA_SATURATE, GL_ONE) 

它不工作,也不會呈現。

glEnable(GL_BLEND) 
glEnable(GL_POLYGON_SMOOTH) 
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) 

它不反抗別名。

+1

你應該編輯你的問題的標題;聽起來這不是真正的抗鋸齒,而是創建圓角的多邊形。 – Feanor

回答

7

嘗試glHint(GL_POLYGON_SMOOTH_HINT, GL_NICEST)

+0

謝謝你的回答。 不幸的是我得到: OpenGL.error.GLError:GLError( \t ERR = 1280, \t描述= '無效enumerant', \t baseOperation = glHint, \t cArguments =(GL_POLYGON_SMOOTH,GL_NICEST) ) 不知道這意味着什麼,但它不喜歡它。我正在用python使用OpenGL。 –

+0

糟糕,它應該是'GL_POLYGON_SMOOTH_HINT',而不是'GL_POLYGON_SMOOTH'。我更新了我的答案。 – tkerwin

+0

謝謝,但它仍然無法正常工作。我想在我的2D遊戲上創建圓角,這就是我使用多邊形的原因。讓角落平穩很好。線條平滑工作。不知道爲什麼不這樣做。 –

3

這是一個平凡的答案..但如果你想圓角,你可能會想在拐角處使用更多更多的頂點,並將它們出更加圓潤的形狀。你也可以考慮以程序的方式來做這件事......但是如果你正在做一個遊戲而你想完成它,我通常會建議你在數據中擁有最終的頂點位置(除非你有令人信服的理由它動態)。

或者,您可以在角落附近使用具有圓角外觀的紋理。隨着視頻硬件變得越來越強大,這種方式逐漸變得不那麼流行,但仍然非常有效。