2012-01-13 154 views
1

我使用如下polygonmode繪製三角形:OpenGL的:如何繪製三角形或多邊形平滑

drawScene(void) 
{ 
    glPopMatrix(); 
    glEnable(GL_POLYGON_SMOOTH); 
    glHint(GL_POLYGON_SMOOTH_HINT, GL_NICEST); 
    glEnable(GL_BLEND); 
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 
    glShadeModel(GL_POLYGON_SMOOTH); 

    glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); 

    glBegin(GL_POLYGON); 
     glVertex3f(x,y,z); 
     glVertex3f(x1,y1,z1); 
     glVertex3f(x2,y2,z2); 
    glEnd(); 
    glPopMatrix(); 
} 

頂點(X,Y,Z,X1,Y1,Z1,X2,Y2,Z2 )使用sin()和cos()進行計算,並將im傳遞給drawScene()方法。基於sin()和cos()值旋轉三角形。我的問題是,三角形繪製時不光滑。也就是說,三角形的外圍部分沒有光滑的線條。在上面的代碼中,如果我使用GL_LINE三角形看起來很平滑,而不是GL_FILL。但是,我需要一個實心的三角形。

+6

它看起來像一個別名問題。您能否上傳問題的截圖,以便我們更好地理解? – 2012-01-13 07:37:07

+2

請更改問題的標題,以表明您指的是繪製一個平滑的三角形而不是三角形的運動。或澄清,如果我誤解了 – dirk 2012-01-13 07:45:21

+0

@dirk使用sin()和Cos()im的計算值傳遞循環中的頂點值並旋轉三角形。基於此,我繪製了三角形。繪製之後,三角形沒有合適的邊框。對不起,如果問題仍然令人困惑。非常感謝 – 2012-01-13 08:48:24

回答

1

根據圖形卡的不同,抗鋸齒可能無法使用,可能會被禁用,或者可能由應用程序控制。

例如,看看這個配置頁面從顯卡:

NVidia CP

因此,在這種情況下,任何3D應用程序會走樣,因爲用戶選擇,並且可以」 t /不應該繞過這個選擇。檢查您的圖形卡控制面板/設置,看看它是否有這樣的選項(它可能不支持抗鋸齒取決於其年齡)。

另外,請花一些時間寫一個描述,準確標題您的問題或沒有人在這裏會付錢給你的關注。

+0

抱歉沒有正確提及標題。下次會照顧。感謝您的回覆。我驗證了我的顯卡設置,它是[英特爾圖形設置]類型(http://www.intel.com/support/graphics/sb/CS-030506.htm)。你能告訴我這是否支持反鋸齒? – 2012-01-13 09:50:21

+0

我不知道。我有一臺帶有英特爾圖形卡的筆記本電腦,設置頁面與此類似(但有一個消除鋸齒設置)。 IIRC,我禁用了抗鋸齒功能,因爲我更關心性能,但是請務必使用任何提及抗鋸齒的設置,並查看它是否對使用3D的圖形應用程序有所幫​​助。哦,並且記得重新啓動任何應用程序以查看更改(例如,遊戲運行時更改圖形設置有時在重新啓動之前無效)。 – 2012-01-13 10:22:59