1 / 34
文档名称:

OpenGL 13-15网格化二次几何体、贝塞尔曲线曲面、.ppt

格式:ppt   页数:34
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

OpenGL 13-15网格化二次几何体、贝塞尔曲线曲面、.ppt

上传人:yunde112 2014/5/18 文件大小:0 KB

下载得到文件列表

OpenGL 13-15网格化二次几何体、贝塞尔曲线曲面、.ppt

文档介绍

文档介绍:1
第 13 章
网格化
网格化的理由
虽然在OpenGL中可以使用glBegin(GL_POLYGON)来画一个多边形,但是它只能实现简单的凸多边形。对于一些复杂的多边形,比如凹多边形,或者有空心的多边形,glBegin(GL_POLYGON)就不能满足需求了。通常可以采用一种叫做“网格化"的方法来画复杂的多边形。
网格化的理由
网格化步骤
要用网格化的方法画多边形,步骤如下:
1) gluNewTess(); //创建一个新的网格化对象。
2) gluTessCallback(); //注册回调函数,完成网格化期间的一些操作。
3) gluTessProperty(); //可有可无的,设置一些网格化的属性值。
4) gluTessBeginPolygon(); //开始画多边形       draw polygon...//在这里画多边形,一个一个点画就可以,最后一个点会和第一个点自动连接起来       gluTessEdnPolygon(); //结束画多边形
5) gluDeleteTess(); //删除网格化对象

GLUtesselator*gluNewTess();
该函数创建一个网格化对象,并返回一个指向该对象的指针。
删除网格化对象
void gluDeleteTess(GLUtesselator*tessobj);
网格化回调函数
void gluTessCallback(GLUtesselator*tessobj,GLenum type,void(*fn)())
网格化属性
void gluTessProperty(GLUtesselator*tessobj,GLenum property,GLdouble value)
网格化属性
如果一个区域的环绕数属于被选择的类别,环绕规则将其视为内部区域。内部需要渲染填充,外部不需。
定义多边形
限定多边形的描述
void gluTessBeginPolygon(GLUtesselator*tessobj,void*user_data)
gluTessEndPolygon(GLUtesselator*tessobj);
限定多边形轮廓线的定义
void gluTessBeglnContour(GLUtesselator*tessobj);
void gluTessEndContour(GLUtesselator*tessobj);
在多边形上指定顶点
void gluTessVertex(GLUtesselator*tessobj,GLdouble coords[3], void*vertex_data);
举例
在场景中左边绘制一个中间有孔的长方形;右边绘制两个互倒的三角形,构成六角形。用w键切换GL_FILL和GL_LINE,用空格键切换环绕模式。