OpenGL GL_POLYGON凹面多边形不会着色

当我尝试在OpenGL中使用Polygon时遇到问题。 我不知道如何解释这个,但我的所有顶点都与开头的顶点相连。 当我尝试着色对象时会发生问题。 我想绘制一个简单的对象。

void TOP (float x1, float y1, float x2, float h,float n) { float r = x2-x1; if(n==1){glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);} // FOR FILL OR NO FILL OBJECT glBegin(GL_POLYGON); glVertex2f(x1,y1); glVertex2f(x2,y1); glVertex2f(x2,y1+h/7); y1=y1+h/7; glVertex2f(x2-r/5,y1+h/7); x2=x2-r/5; y1=y1+h/7; glVertex2f(x2,y1+2*h/7); y1=y1+2*h/7; glVertex2f(x2+r/5,y1+h/7); y1=y1+h/7; x2=x2+r/5; glVertex2f(x2,y1+2*h/7); cout<<y1<<endl; y1=y1+2*h/7; glVertex2f(x2-r/5,y1); x2=x2-r/5; glVertex2f(x2,y1-h/7); y1=y1-h/7; glVertex2f(x2-r/5,y1);x2=x2-r/5; glVertex2f(x2,y1+h/7); y1=y1+h/7; glVertex2f(x2-r/5,y1);x2=x2-r/5; glVertex2f(x2,y1-h/7); y1=y1-h/7; glVertex2f(x2-r/5,y1);x2=x2-r/5; glVertex2f(x2,y1+h/7); y1=y1+h/7; glVertex2f(x2-r/5,y1);x2=x2-r/5; glVertex2f(x2,y1-2*h/7);y1=y1-2*h/7; glVertex2f(x2+r/5,y1-h/7);y1=y1-h/7; x2=x2+r/5; glVertex2f(x2,y1-2*h/7); y1=y1-2*h/7; glVertex2f(x2-r/5,y1-h/7); y1=y1-h/7;x2=x2-r/5; glVertex2f(x2,y1-h/7); glEnd(); } 

输出:

http://i.stack.imgur.com/BLMSJ.png

GL_POLYGON仅适用于凸多边形 。

对于凹多边形,您至少有两个选项:

  1. 对多边形进行三角测量并使用GL_TRIANGLES

  2. 使用模板缓冲技巧 。