2013-03-19 52 views
3

我想生成多个五边形,但由于某种原因五边形彼此连接。有什么建议么?opengl多个五边形

GLfloat arr[] = {100,200,340,230,130,190,200,190,260,120,200}; 

glColor3f(1.0, 1.0, 1.0); 
GLfloat angle2, r2, r_big_circle2, r_small_circle2, step2 = 3.14/5.0; 
r_big_circle2 = 25; 
r_small_circle2 = 20; 

glPushMatrix(); 

glBegin(GL_LINE_LOOP); 
for (int n = 0; n < 5; n++){ 
    for (int i = 0; i < 10; i++) 
    { 
     r2 = (i % 2 == 0 ? r_small_circle2 : r_big_circle2); 
     angle2 = step2 * i; 
     glVertex3f(r2 * cos(angle2)-arr[n], r2 * sin(angle2)-arr[n], -500); 
    } 

} 
glEnd(); 
glPopMatrix(); 

回答

5

移动glBeginglEnd第一for循环内。另外一个用于5边多边形的GL_LINE_LOOP应该只有glVertex3f指定的5个点 - 你正在绘制每个五角形两次,一次在其顶部。试试:

for (int n = 0; n < 5; n++) { 
    glBegin(GL_LINE_LOOP); 
    for (int i = 0; i < 5; i++) { 
     r2 = (i % 2 == 0 ? r_small_circle2 : r_big_circle2); 
     angle2 = step2 * i; 
     glVertex3f(r2 * cos(angle2)-arr[n], r2 * sin(angle2)-arr[n], -500); 
    } 
    glEnd(); 
} 
+1

谢谢你的工作很棒 – 2013-03-19 01:42:54