2011-10-10 65 views
2

有人可以向我解釋爲什麼下面的代碼沒有繪製任何東西,但是如果我使用GL_LINE_LOOP它會形成一個閉環?OpenGL中的多邊形

glBegin(GL_POLYGON); 

for(int i = 0; i <= Ncircle; i++) { 
    tempAngle = angle + i*(2*M_PI - 2*angle)/Ncircle; 
    glVertex3f(r*cos(tempAngle), r*sin(tempAngle), 0.0); 
} 
glVertex3f(l, 0, 0.0); 
//glVertex3f(r*cos(angle), r*sin(angle), 0.0); 

glEnd(); 

(這基本上是半徑r和Θ的在[-angle,角]與高度L的上三角形的圓它使得離開圓的角是三角形的角度:

result using GL_LINE_LOOP

+1

您是否嘗試過使用trifan?似乎是理想的用途,甚至只是三腳架。 – ssube

回答

8

多邊形是不可見的,因爲多邊形背面是可見的,並且背面是不是默認渲染(這是剔除)。

多邊形面由投影頂點的屏幕位置確定:如果頂點ar e逆時針顯示正面,否則背面可見。

要控制多邊形的面部剔除,請參閱glCullFace。

我建議保留默認的面部剔除預設,並按逆時針順序發出多邊形頂點。當相同的幾何圖形顯示兩個面(前面和後面,即一個罐子)時,背面剔除將被禁用。

+0

謝謝。 :)這是正確的。它解決了它。 –