用OpenGL绘制多边形时,绘制的图形变形了
voidMyDraw(){glColor3f(1.0,1.0,1.0);glBegin(GL_POLYGON);glVertex2i(380,380);glVertex2...
void MyDraw(){
glColor3f(1.0, 1.0, 1.0);
glBegin(GL_POLYGON);
glVertex2i(380, 380);
glVertex2i(320, 410);
glVertex2i(180, 280);
glVertex2i(90, 330);
glVertex2i(50, 310);
glVertex2i(50, 150); glVertex2i(90, 130);
glVertex2i(180, 180);
glVertex2i(320, 50);
glVertex2i(380, 80);
glEnd(); glFlush();
}
本来应该只有红色线框内才是白的,小弟不知原因,求大神解答 展开
glColor3f(1.0, 1.0, 1.0);
glBegin(GL_POLYGON);
glVertex2i(380, 380);
glVertex2i(320, 410);
glVertex2i(180, 280);
glVertex2i(90, 330);
glVertex2i(50, 310);
glVertex2i(50, 150); glVertex2i(90, 130);
glVertex2i(180, 180);
glVertex2i(320, 50);
glVertex2i(380, 80);
glEnd(); glFlush();
}
本来应该只有红色线框内才是白的,小弟不知原因,求大神解答 展开
展开全部
OpenGL只能绘制凸多边形,你红线勾出的显然是个凹多边形,所以绘制错误。
解决方法:
1. 可以从中间将这个凹多边形分割为两个凸多边形,分两次画出:
比如:
glBegin(GL_POLYGON);
//左边多边形的点
glEnd();
glBegin(GL_POLYGON);
//右边多边形的点
glEnd();
2. 可以用GLU的网格化对象,将此凹多边形三角化,并画出。
解决方法:
1. 可以从中间将这个凹多边形分割为两个凸多边形,分两次画出:
比如:
glBegin(GL_POLYGON);
//左边多边形的点
glEnd();
glBegin(GL_POLYGON);
//右边多边形的点
glEnd();
2. 可以用GLU的网格化对象,将此凹多边形三角化,并画出。
追问
GLU的网格化对象是什么?
追答
就是GLUtesselator, 能将任意多边形,简化为三角形或凸多边形的组合,从而使OpenGL能绘制出任意形状的多边形。
你随便找本OpenGL的书,上面都有,或者去Nehe的网站找例子。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询