OpenGL图形编程2基本图形绘制(陈永强)ppt课件.ppt
《OpenGL图形编程2基本图形绘制(陈永强)ppt课件.ppt》由会员分享,可在线阅读,更多相关《OpenGL图形编程2基本图形绘制(陈永强)ppt课件.ppt(47页珍藏版)》请在三一办公上搜索。
1、1,OpenGL图形编程,武汉纺织大学数学与计算机学院,授课教师:陈永强 教授,2. OpenGL基本图形绘制,2.1glBegin/glEnd 2.2点的绘制2.3直线的绘制2.4多边形面的绘制2.5OpenGL中的字符函数2.6OpenGL中的反走样,2,2.1glBegin/glEnd,OpenGL的图元绘制放在函数glBegin和glEnd之间,由函数glBegin的参数指定绘制图元的类型。,2.1glBegin/glEnd,表 glBegin可支持的OpenGL图元,2.1glBegin/glEnd,表 glBegin可支持的OpenGL图元(续),2.2点的绘制,点的绘制glVer
2、tex函数用于指定顶点,可以有2,3,4个参数。带2个参数时指定的是空间点的x,y坐标,其z坐标为默认值0,在绘制平面图形时常常使用这类函数;带3个参数时指定的是空间点的x,y和z坐标;带4个参数时,除了定义空间点的x,y,z坐标,还有一个不为0的w坐标。点的坐标(x,y,z,w)实际上构成了一个齐次坐标。在OpenGL中,仍然使用规范化齐次坐标以保证点的齐次坐标与三维坐标的一一对应关系,最后指定的空间点的坐标为(x/w,y/w,z/w,1),w成了坐标值的一个缩放因子。,6,2.2点的绘制,点的绘制 glBegin(GL_POINTS); glVertex3f(0.0f, 0.0f, 0.0
3、f); glVertex3f(10.0f, 0.0f, 0.0f); glEnd();,7,2.2点的绘制,点的属性(大小)在OpenGL中绘制一个点时,点大小的默认值是一个象素。可以用函数glPointSize修改这个值: void glPointSize(GLfloat size);这个函数采用一个参数来指定画点时以象素为单位的近似直径。,8,2.2点的绘制,点的属性(大小)通常使用下面的代码来获取点大小的范围和它们之间最小的中间值: GLfloat sizes2;/保存绘制点的尺寸范围 GLfloat step;/保存绘制点尺寸的步长 glGetFloatv(GL_POINT_SIZE_
4、RANGE,sizes); glGetFloatv(GL_POINT_SIZE_GRANULARITY,&step); 在数组 seizes 中包含两个元素,分别保存了glPointSize的最小有效值和最大有效值,而变量step将保存点大小之间允许的最小增量。指定范围之外的大小不会被解释为错误,而是使用最接近指定值的可支持的最大或最小尺寸。,9,2.3直线的绘制,直线的绘制模式GL_LINESGL_LINE_STRIPGL_LINE_LOOP,10,(a)GL_LINES画线模式 (b)GL_LINE_LOOP画线模式 (c)GL_LINE_STRIP画线模式图5-57 OpenGL画线模式
5、,2.3直线的绘制,直线的绘制使用模式GL_LINES可以在两点之间画线,在两点(0,0,0)和(10,10,10)之间画一条直线: glBegin(GL_LINES); glVertex3f(0.0f,0.0f,0.0f); glVertex3f(10.0f,10.0f,10.0f); glEnd(); 注意,在glBegin/glEnd序列中两个顶点指定了一个直线,如果序列中指定的点为奇数个,那么最后一个顶点将被忽略。,11,2.3直线的绘制,直线的绘制需要在一系列的顶点之间绘制连续直线,就要用到GL_LINE_STRIP或GL_LINE_LOOP模式。,12,2.3直线的绘制,直线的绘制
6、GL_LINE_STRIP模式可以根据指定的一系列顶点,从一个顶点到另一个顶点用连续的线段画线: glBegin(GL_LINE_STRIP); glVertex3f(0.0f,0.0f,0.0f); glVertex3f(10.0f,10.0f,0.0f); glVertex3f(20.0f,5.0f,0.0f); glEnd(); 在xy平面内绘制了两条直线(0,0,0)到(10,0,0)和(0,10,0)到(20,5,0)。,13,2.3直线的绘制,直线的绘制GL_LINE_LOOP模式与GL_LINE_STRIP模式类似,只是会在指定的最后一个顶点与第一个顶点之间画最后一条线。,14,
7、2.3直线的绘制,直线的属性线宽 线型,15,2.3直线的绘制,直线的属性 线宽可用glLineWidth指定线宽: void glLineWidth(GLfloat width)与点的大小类似,glLineWidth函数采用一个参数来指定要画的线以象素计的近似宽度 。,16,2.3直线的绘制,直线的属性线宽可以用下面的代码来获取线宽范围和它们之间的最小间隔: GLfloat sizes2;/保存线宽的尺寸范围 GLfloat step;/保存线宽尺寸的最小间隔 glGetFloarv(GL_LINE_WIDTH_RANGE,sizes); glGetFloatv(GL_LINE_WIDTH_
8、GRANULARITY,&step); 数组 sizes中保存了glLineWidth的最小有效值和最大有效值,而变量step将保存线宽之间允许的最小增量。OpenGL规范只要求支持一种线宽:1.0。Microsoft的OpenGL实现允许线宽从0.5到10.0,最小增量为 0.125。,17,2.3直线的绘制,直线的属性线型可以用虚线或短划线模式创建直线,需要先调用: glEnable(GL_LINE_STIPPLE);然后,建立用于画线的模式 : glLineStipple(GLint factor,GLushort pattern);参数pattern是一个 16 位值,指定画线时所用的
9、模式,逆向使用。每一位代表线段的一部分是开还是关。默认情况下,每一位对应一个象素。参数factor充当倍数可以增加模式的宽度。,18,2.3直线的绘制,19,图5-58 画线模式用于构造线段,2.3直线的绘制,例子红皮书lines.c,2.4多边形面的绘制,三角形面的绘制GL_TRIANGLESGL_TRIANGLE_STRIPGL_TRIANGLE_FAN四边形面的绘制GL_QUADSGL_QUADS_STRIP多边形面的绘制(GL_POLYGON),21,2.4多边形面的绘制,三角形面的绘制在OpenGL中,面是由多边形构成的。三角形是最简单的多边形,有三条边。可以使用 GL_TRIANG
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- OpenGL 图形 编程 基本 绘制 陈永强 ppt 课件

链接地址:https://www.31ppt.com/p-1376576.html