《OpenGL基本图元的绘制.ppt》由会员分享,可在线阅读,更多相关《OpenGL基本图元的绘制.ppt(27页珍藏版)》请在三一办公上搜索。
1、,第六章,OpenGL基本图元的绘制,OpenGL基本图元的绘制,第六章-2,内容,概述 点 线 多边形 字符,OpenGL基本图元的绘制,第六章-3,概述,OpenGL中最基本的图元是点,每个几何实体都是由一个顶点集和绘制图元的类型描述的。顶点间是否连接或怎样连接由图元的类型决定。,OpenGL基本图元的绘制,第六章-4,概述,OpenGL提供的所有图元(点、线、多边形)的绘制,必须通过glBegin()和glEnd()函数的配对来完成。void glBegin(Glenum mode)功能:描述一个几何图形顶点序列的开始。参数说明:mode指图元的类型。void glEnd(void)功能
2、:标记顶点表的结束。例如:glBegin(GL_LINES);glVertex2f(50.0,50.0);glVertex2f(100.0,100.0);glEnd();,OpenGL基本图元的绘制,第六章-5,几何图元类型和含义,OpenGL基本图元的绘制,第六章-6,几何图元实体,OpenGL基本图元的绘制,第六章-7,点,点的绘制glVertex2,3,4sifd(TYPE coords)参数说明:coords用一个数组或用奇次坐标(x,y,z,w)赋顶点坐标。四维奇次坐标(x,y,z,w)相当于三次坐标(x/w,y/w,z/w)。例如:glBegin(GL_POINTS);glVert
3、ex2i(1,2);glVertex3d(1.23,2.34,3.63);glVertex4f(1.3,2.0,-4.2,1.0);glVertex3sv(array);glEnd();,OpenGL基本图元的绘制,第六章-8,点,点的大小点的大小默认值是一个像素,可以用函数修改这个值,以设定点的大小。void glPointsize(Glfloat size)参数size:指定画点时以像素为单位的近似直径。注意:系统只支持一定大小范围内的点的大小。,OpenGL基本图元的绘制,第六章-9,点的绘制,图形显示布局及坐标系,图(a):整个屏幕用于绘制图形。图(b):时下流行的“基于窗口”的系统(
4、如Windows窗口系统)。图(c):OpenGL“基于窗口”的绘图系统。,OpenGL基本图元的绘制,第六章-10,点的绘制-示例1,OpenGL基本图元的绘制,第六章-11,点的绘制-示例1,建立坐标系统gluOrtho2D(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top);如:,实质上是定义二维正视投影矩阵,OpenGL基本图元的绘制,第六章-12,点的绘制-示例2_0,OpenGL基本图元的绘制,第六章-13,点的绘制-示例2_0,绘制函数f(x)的图形 f(x)=e-xcos(2 x)x0,4 glBegin(GL_
5、POINTS);for(Gldouble x=0;x4.0;x+=0.005)glVertex2d(x,f(x);glEnd();glFlush();,会出现什么问题?,OpenGL基本图元的绘制,第六章-14,点的绘制-示例2_1,改进 放大x至整个屏幕窗口宽度;sx=x*screenWidth/4.0放大并且移动y(因为函数f(x)-1.0,1.0)sy=(y+1.0)*screenHeight/2.0上述方法总结:从x到sx,以及从y到sy的变换具有如下形式:sx=Ax+Bsy=Cy+D本方法采用蛮力方法(Brute Force),不具有通用性。,OpenGL基本图元的绘制,第六章-15
6、,实验(二),1.绘制函数f(x)=sin(x)x0,2 2.绘制过程图形任取三点T0、T1、T2,该三点可形成某个三角形;从上述三点中任取一点,取名为点P0,并且绘制该点;循环执行如下步骤,直至满足结束条件:从T0、T1、T2中任取一点作为,取名为点T;在点T和前面选择的点PK-1的中间构建一个点,取名为PK;绘制点PK;,OpenGL基本图元的绘制,第六章-16,实验(二),OpenGL基本图元的绘制,第六章-17,线,直线的绘制glBegin(GL_LINES);glVertex3f(0.0,0.0,0.0);glVertex3f(50.0,50.0,50.0);glEnd();,折线和
7、封闭折线的绘制GL_LINE_STRIP绘制不闭合的折线;GL_LINE_LOOP绘制闭合的折线;,OpenGL基本图元的绘制,第六章-18,线的绘制-示例1,绘制函数f(x)的图形f(x)=e-xcos(2 x)x0,4 glBegin(GL_LINE_STRIP);for(Gldouble x=0;x4.0;x+=0.005)glVertex2d(x,f(x);glEnd();glFlush();,OpenGL基本图元的绘制,第六章-19,线的绘制-示例1实验结果,OpenGL基本图元的绘制,第六章-20,线的绘制-示例2,OpenGL基本图元的绘制,第六章-21,线的属性,线宽线型在Op
8、enGL中用于绘制点划线(虚线或点线)。启动点划线:,OpenGL基本图元的绘制,第六章-22,线的属性,建立画线模式:,参数pattren:一个16位值,它指定了画线时所用的模式。每一位代表线段的一部分是开还是关。默认情况下,每一位对应于一个像素。factor参数充当倍数可以增加模式的宽度。模式的第0位(最低有效位)最先用于指定线段。,OpenGL基本图元的绘制,第六章-23,多边形-三角形,OpenGL中的多边形有两点限制(实现硬件加速)多边形的边不能自相交;多边形必须是凸多边形;三角形是OpenGL程序员的首选图元。任何多个边的形状都可以用一个或多个三角形仔细地放在一起构成。大多数3D加
9、速硬件都为绘制三角形进行了高度优化。必定不自相交;必定是凸多边形;许多3D基准测试程序都以每秒能绘制的三角形个数作为衡量标准。,OpenGL基本图元的绘制,第六章-24,多边形-三角形,三角形类型GL_TRIANGLES(三角形)GL_TRIANGLE_STRIP(三角条)GL_TRIANGLE_FAN(三角扇形),OpenGL基本图元的绘制,第六章-25,三角形的绘制-示例,OpenGL基本图元的绘制,第六章-26,三角形的绘制-示例,OpenGL基本图元的绘制,第六章-27,其它图元,GL_QUADS(四边形)GL_QUADS_STRIP(四边形条)GL_POLYGON(通用多边形),有一个图形是如此常用,以致于它有一个特殊函数而不是图元;这个图形就是矩形。函数gIRect提供了一种容易和方便的机制用于指定矩形。,