OPENGL-第9章一般形状

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 用途:工程上常用的饼状图
8
绘制球体
void gluSphere(*obj, r, slice, stack); • r : 半径 • slice:经线数目 • stack: 纬线数目 • 用途:球类物体
9
复杂多边形
GLU_TESS_BEGIN :三角形 复杂多边形 :凹多边形,带有内孔腔的多边形,将这类 GLU_TESS_BEGIN_DATA :其他三角形方法 多边形画出,画法同凸多边形 GLU_TESS_BEGIN_COMBINE •GLU_TESS_END 凹多边形的创建,创建镶嵌对象 • GLUtriangulatorObj *tess; GLU_TESS_VERTEX …… • tess = gluNewTess(); 与前个参数对应给 /* Tesselator object */ 出
第9章 几何体的一般形状
•本章学习: –二次曲面的简单几何形状 –通用几何形状 –各种图元绘制几何形状 –绘制复杂多边形
1
已学过的物体建模方法
•基本体素方法:球,正方体,茶壶,glut……,
应用面窄
•一般多边形方法:
glBegin(图元类型); 顶点颜色 顶点法矢 顶点坐标 glEnd();
•自由曲面方法
第9章一般物体pencil
盘状体绘制
• 可以带有内孔的盘 void gluDisk(*obj, ri, ro, slice, loops); • ri, ro: 孔径(可为0)和盘径 • slice:盘外圆的逼近边数 • loops:同心圆的个数
第9章一般物体pencil
7
绘制扇形区域
void gluPartialDisk(*obj, ri, ro, slice, loops, as, ae); • ri, ro, slice, loops : 同前 • as:起始角 • ae: 从起始角到终止角之间的夹角
• GLU_TESS_BEGIN——glBegin • GLU_TESS_VERTEX——glVertex • GLU_TESS_END——glEnd
第9章一般物体letter
11
F16显示分析
• 多边形:圆柱机身,圆锥机头 • 发动机:圆台、圆锥、盘 • 机翼、尾翼:多边形
第9章一般物体F16
12
绘制复杂多边形
• gluTessBeginContour()和 • gluTessEndContour() • 画图过程(字母A):
– 定义外部轮廓路径(7个顶点,顶点有序) – 定义内部轮廓路径 (3个顶点,顶点有序)
A
第9章一般物体-letter
13
(4)gluQuadricOrientation(GLUquadricObj *obj, GLenum Orientation);//控制光照方向(向外或向内)
5
圆柱体(锥体)的绘制
void gluCylinder(*obj, rbase, rtop, h, slice, stack); 沿z轴绘制圆柱(圆锥)体,包含了 rbase, rtop, h:底半径、顶半径和高度 slice:沿径向分解个数 stack:沿轴向分解个数
绘制类型: GLU_FILL:填充 GLU_LINE:线框 GLU_SILHOUETTE:外轮廓 GLU_POINT:点
绘制对象
4
光照明暗处理
(3)说明光照 gluQuadricNormals(GLUquadricObj *obj, GLenum Normals);//控制光照明暗处理
方向类型: GLU_OUTSIDE GLU_INSIDE 绘制类型: GLU_NONE GLU_FLAT GLU_SMOOTH
–Bezier曲面 –NURBS曲面
2
其他物体的构建方法
•glu32.lib:提供其他物体的显示功能。 •基本思想是:镶嵌(tessellate),即用小三角 形或者点铺满物体表面 •主要是:
–设定简单二次曲面参数 –设定绘制锥体、柱体、盘状体、球体的几何参数
ຫໍສະໝຸດ Baidu
3
简单二次曲面的绘制
(1)建立二次曲面的对象 GLUquadricObj *obj; obj = glutNewQuadric(); (2)改变状态-定制绘制类型 • gluQuadricDrawStyle(GLUquadricObj *obj, GLenum drawStyle);
• 创建的对象将使用这些信息渲染多边形,给出边界即 可 指定一个函数开始三角 形绘制(包括三种三角 • 回调函数:
• gluTessCallback(*tess, Which, fn); • 例:gluTessCallback(tess, GLU_TESS_BEGIN, glBegin);
10
形方法)
相关文档
最新文档