OpenGL图形编程2基本图形绘制(陈永强)PPT课件下载推荐.ppt
- 文档编号:15552941
- 上传时间:2022-11-04
- 格式:PPT
- 页数:47
- 大小:482.50KB
OpenGL图形编程2基本图形绘制(陈永强)PPT课件下载推荐.ppt
《OpenGL图形编程2基本图形绘制(陈永强)PPT课件下载推荐.ppt》由会员分享,可在线阅读,更多相关《OpenGL图形编程2基本图形绘制(陈永强)PPT课件下载推荐.ppt(47页珍藏版)》请在冰豆网上搜索。
典型情况下,这用于指定的后一个和第一个顶点之间绘制。
典型情况下,这用于绘制那些可能违反了绘制那些可能违反了GL_POLYGON用法规则的封闭区用法规则的封闭区域域GL_TRIANGLES将指定的顶点用于构造三角形。
每三个顶点指定一个新三角将指定的顶点用于构造三角形。
每三个顶点指定一个新三角形。
如果顶点个数不是三的倍数,多余的顶点将被忽略形。
如果顶点个数不是三的倍数,多余的顶点将被忽略2.1glBegin/glEnd表glBegin可支持的OpenGL图元(续)模式模式图元类型图元类型GL_TRIANGLE_STRIP将指定的顶点用于创建三角条。
指定前三个顶点之后,后继的每将指定的顶点用于创建三角条。
指定前三个顶点之后,后继的每个顶点与它前面两个顶点一起用来构造下一个三角形。
每个顶点个顶点与它前面两个顶点一起用来构造下一个三角形。
每个顶点三元组(在初的组之后)会自动重新排列以确保三角形绕法的三元组(在初的组之后)会自动重新排列以确保三角形绕法的一一致性。
致性。
GL_TRIANGLE_FAN将指定的顶点用于构造三角扇形。
第一个顶点充当原点,第三个将指定的顶点用于构造三角扇形。
第一个顶点充当原点,第三个顶点之后的每个顶点与它的前一个顶点还有原点一起组合。
顶点之后的每个顶点与它的前一个顶点还有原点一起组合。
GL_QUADS每四个顶点一组用于构造一个四边形。
如果顶点个数不是四的倍每四个顶点一组用于构造一个四边形。
如果顶点个数不是四的倍数,多余的顶点将被忽略数,多余的顶点将被忽略GL_QUADS_STRIP将指定的顶点用于构造四条形边。
在第一对顶点之后,每对顶点将指定的顶点用于构造四条形边。
在第一对顶点之后,每对顶点定义一个四边形。
和定义一个四边形。
和GL_QUADS的顶点顺序不一样,每对顶的顶点顺序不一样,每对顶点以指定顺序的逆序使用,以便保证绕法的一致点以指定顺序的逆序使用,以便保证绕法的一致GL_POLYGON将指定的顶点用于构造一个凸多边形。
多边形的边缘决不能相交。
将指定的顶点用于构造一个凸多边形。
最最后一个顶点会自动连接到第一个顶点以确保多边形是封闭的后一个顶点会自动连接到第一个顶点以确保多边形是封闭的2.2点的绘制点的绘制o点的点的绘制制glVertex函数用于指定函数用于指定顶点,可以有点,可以有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成了坐成了坐标值的的一个一个缩放因子。
放因子。
62.2点的绘制点的绘制o点的点的绘制制glBegin(GL_POINTS);
glVertex3f(0.0f,0.0f,0.0f);
glVertex3f(10.0f,0.0f,0.0f);
glEnd();
72.2点的绘制点的绘制o点的属性(大小)点的属性(大小)在在OpenGL中中绘制一个点制一个点时,点大小的默,点大小的默认值是一个象素。
是一个象素。
可以用函数可以用函数glPointSize修改修改这个个值:
voidglPointSize(GLfloatsize);
这个函数采用一个参数来指定画点个函数采用一个参数来指定画点时以象素以象素为单位的近似位的近似直径。
直径。
82.2点的绘制点的绘制o点的属性(大小)点的属性(大小)通常使用下面的代通常使用下面的代码来来获取点大小的范取点大小的范围和它和它们之之间最小的中最小的中间值:
GLfloatsizes2;
/保存保存绘制点的尺寸范制点的尺寸范围GLfloatstep;
/保存保存绘制点尺寸的步制点尺寸的步长glGetFloatv(GL_POINT_SIZE_RANGE,sizes);
glGetFloatv(GL_POINT_SIZE_GRANULARITY,&
step);
在数在数组seizes中包含两个元素,分中包含两个元素,分别保存了保存了glPointSize的最小有效的最小有效值和最大有和最大有效效值,而,而变量量step将保存点大小之将保存点大小之间允允许的最小增量。
指定范的最小增量。
指定范围之外的大小不之外的大小不会被解会被解释为错误,而是使用最接近指定,而是使用最接近指定值的可支持的最大或最小尺寸。
的可支持的最大或最小尺寸。
92.3直线的绘制直线的绘制o直直线的的绘制模式制模式nGL_LINESnGL_LINE_STRIPnGL_LINE_LOOP10(a)GL_LINES画画线模式模式(b)GL_LINE_LOOP画画线模式模式(c)GL_LINE_STRIP画画线模式模式图5-57OpenGL画画线模式模式2.3直线的绘制直线的绘制o直直线的的绘制制使用模式使用模式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);
注意,在注意,在glBegin/glEnd序列中两个序列中两个顶点指定了一个直点指定了一个直线,如果序,如果序列中指定的点列中指定的点为奇数个,那么最后一个奇数个,那么最后一个顶点将被忽略。
点将被忽略。
112.3直线的绘制直线的绘制o直直线的的绘制制需要在一系列的需要在一系列的顶点之点之间绘制制连续直直线,就要用到,就要用到GL_LINE_STRIP或或GL_LINE_LOOP模式。
模式。
122.3直线的绘制直线的绘制o直直线的的绘制制GL_LINE_STRIP模式可以根据指定的一系列模式可以根据指定的一系列顶点,从一个点,从一个顶点到另一点到另一个个顶点用点用连续的的线段画段画线:
glBegin(GL_LINE_STRIP);
glVertex3f(10.0f,10.0f,0.0f);
glVertex3f(20.0f,5.0f,0.0f);
在在xy平面内平面内绘制了两条直制了两条直线(0,0,0)到到(10,0,0)和和(0,10,0)到到(20,5,0)。
132.3直线的绘制直线的绘制o直直线的的绘制制GL_LINE_LOOP模式与模式与GL_LINE_STRIP模式模式类似,只是会在指定似,只是会在指定的最后一个的最后一个顶点与第一个点与第一个顶点之点之间画最后一条画最后一条线。
142.3直线的绘制直线的绘制o直直线的属性的属性n线宽n线型型152.3直线的绘制直线的绘制o直直线的属性的属性n线宽可用可用glLineWidth指定指定线宽:
voidglLineWidth(GLfloatwidth)与点的大小与点的大小类似,似,glLineWidth函数采用一个参数函数采用一个参数来指定要画的来指定要画的线以象素以象素计的近似的近似宽度度。
162.3直线的绘制直线的绘制o直直线的属性的属性n线宽可以用下面的代可以用下面的代码来来获取取线宽范范围和它和它们之之间的的最小最小间隔:
隔:
/保存保存线宽的尺寸范的尺寸范围GLfloatstep;
/保存保存线宽尺寸的最小尺寸的最小间隔隔glGetFloarv(GL_LINE_WIDTH_RANGE,sizes);
glGetFloatv(GL_LINE_WIDTH_GRANULARITY,&
数数组sizes中保存了中保存了glLineWidth的最小有效的最小有效值和最大有效和最大有效值,而,而变量量step将将保存保存线宽之之间允允许的最小增量。
的最小增量。
OpenGL规范只要求支持一种范只要求支持一种线宽:
1.0。
Microsoft的的OpenGL实现允允许线宽从从0.5到到10.0,最小增量,最小增量为0.125。
172.3直线的绘制直线的绘制o直直线的属性的属性n线型型可以用虚可以用虚线或短划或短划线模式模式创建直建直线,需要先,需要先调用:
用:
glEnable(GL_LINE_STIPPLE);
然后,建立用于画然后,建立用于画线的模式的模式:
glLineStipple(GLintfactor,GLushortpattern);
参数参数pattern是一个是一个16位位值,指定画,指定画线时所用的模式,逆向使所用的模式,逆向使用。
每一位代表用。
每一位代表线段的一部分是开段的一部分是开还是关。
默是关。
默认情况下,每一情况下,每一位位对应一个象素。
一个象素。
参数参数factor充当倍数可以增加模式的充当倍数可以增加模式的宽度。
度。
182.3直线的绘制直线的绘制19图图5-58画线模式用于构造线段画线模式用于构造线段2.3直线的绘制直线的绘制o例子例子红皮皮书lines.c2.4多边形面的绘制多边形面的绘制o三角形面的三角形面的绘制制nGL_TRIANGLESnGL_TRIANGLE_STRIPnGL_TRIANGLE_FANo四四边形面的形面的绘制制nGL_QUADSnGL_QUADS_STRIPo多多边形面的形面的绘制(制(GL_POLYGON)212.4多边形面的绘制多边形面的绘制o三角形面的三角形面的绘制制在在OpenGL中,面是由多中,面是由多边形构成的。
形构成的。
三角形是最三角形是最简单的多的多边形,有三条形,有三条边。
可以使用。
可以使用GL_TRIANGLES模式通模式通过把三个把三个顶点点连接到一起而接到一起而绘出三角形。
出三角形。
2.4多边形面的绘制多边形面的绘制o三角形面的三角形面的绘制制以下以下绘制了一个三角形:
制了一个三角形:
glBegin(GL_TRIANGLES);
glVertex2f(0.0,0.0);
glVertex2f(15.0,15.0);
glVertex2f(30.0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- OpenGL 图形 编程 基本 绘制 陈永强