作业帮 > 综合 > 作业

用OpenGL绘制多边形时,绘制的图形变形了

来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/09/30 20:25:46
用OpenGL绘制多边形时,绘制的图形变形了
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();
}
本来应该只有红色线框内才是白的,小弟不知原因,

 
用OpenGL绘制多边形时,绘制的图形变形了
OpenGL只能绘制凸多边形,你红线勾出的显然是个凹多边形,所以绘制错误.
解决方法:
1.可以从中间将这个凹多边形分割为两个凸多边形,分两次画出:
比如:
glBegin(GL_POLYGON);
//左边多边形的点
glEnd();
glBegin(GL_POLYGON);
//右边多边形的点
glEnd();
2.可以用GLU的网格化对象,将此凹多边形三角化,并画出.
再问: GLU的网格化对象是什么?
再答: 就是GLUtesselator, 能将任意多边形,简化为三角形或凸多边形的组合,从而使OpenGL能绘制出任意形状的多边形。 你随便找本OpenGL的书,上面都有,或者去Nehe的网站找例子。