2011-10-10 69 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

谢谢。 :)这是正确的。它解决了它。 –