用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();
}
本来应该只有红色线框内才是白的,小弟不知原因,求大神解答
展开
 我来答
cl65agm
2013-03-03 · TA获得超过190个赞
知道答主
回答量:96
采纳率:0%
帮助的人:58.7万
展开全部
OpenGL只能绘制凸多边形,你红线勾出的显然是个凹多边形,所以绘制错误。
解决方法:
1. 可以从中间将这个凹多边形分割为两个凸多边形,分两次画出:
比如:
glBegin(GL_POLYGON);
//左边多边形的点

glEnd();

glBegin(GL_POLYGON);
//右边多边形的点

glEnd();

2. 可以用GLU的网格化对象,将此凹多边形三角化,并画出。
追问
GLU的网格化对象是什么?
追答
就是GLUtesselator, 能将任意多边形,简化为三角形或凸多边形的组合,从而使OpenGL能绘制出任意形状的多边形。
你随便找本OpenGL的书,上面都有,或者去Nehe的网站找例子。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式