OpenGL中的多边形

时间:2011-10-10 11:08:08

标签: opengl

有人可以向我解释为什么下面的代码没有绘制任何东西,但是如果我使用GL_LINE_LOOP它会做一个闭环吗?

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,angle]中,其上有一个高度为l的三角形,这样离开圆的角度就是三角形的角度:

result using GL_LINE_LOOP

1 个答案:

答案 0 :(得分:8)

多边形不可见,因为多边形背面是可见的,默认情况下不会渲染背面(它被剔除)。

多边形面由投影顶点的屏幕位置决定:如果顶点是逆时针方向,则前面是可见的,否则后面是可见的。

要控制多边形面剔除,请参阅glCullFace。

我建议保留默认的面部剔除预设,并以逆时针顺序发出多边形顶点。当相同的几何图形显示两个面(正面和背面,即一个罐子)

时,应禁用背面剔除