




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2006,.,1,3.4OpenGL中基本几何图形的绘制,3.4.1点的绘制3.4.2线的限制3.4.3多边形的绘制,OpenGL的基本几何元素有点、线、多边形。从根本上看,OpenGL绘制的所有复杂三维物体都是由一定数量的基本图形元素构成的,曲线、曲面分别是由一系列直线段,多边形近似得到的。,2006,.,2,OpenGL的点用一组称为顶点的浮点数定义。所有的内部运算都是按顶点是三维点进行的。即使用户设定的是二维的顶点,OpenGL也会通过自动增加一个值为0的z坐标。在OpenGL中,顶点的设置命令为:比如:voidglVertex3f()voidglVertex234sifdv(TYPEcords)参数234:为输入的坐标值个数;参数sifd:为输入坐标的数据类型;参数(cords)是四维坐标(x,y,z,w)的缩写,最少必须用二维坐标(x,y)。默认值z为0.0,w为1.0。,3.4.1点的绘制,顶点的设置命令:,2006,.,3,所有的几何图最终都是通过一组有序顶点来描述的。OpenGL中有十种基本图元,从空间中绘制的简单的点到任意边数的封闭多边形。用glBegin命令可告诉OpenGL开始把一组顶点解释为特定图元。然后用glEnd命令结束该图元的顶点列表。,3.4.1点的绘制(续),voidglBegin(Glenummode);此函数标志描述一个几何图元的顶点列表的开始。图元的类型由mode来决定。共有GL_POINTS,GL_LINES,GL_LINE_STRIP等十种图元voidglEnd(void);此函数标志着顶点列表的结束。,2006,.,4,3.4.1点的绘制(续),点的绘制:,glBegin(GL_POINTS);glVertex3f(0.0,0.0,0.0);glVertex3f(5.0,5.0,5.0);glEnd();,在绘制一个点时,点的大小的默认值是一个像素。可以用函数glPointSize()来对点的大小进行修改。函数如下:voidglPointSize(GLfloatsize);该命令以像素为单位设置绘制点的大小。,2006,.,5,voidglLineWidth(GLfloatwidth);以象素为单位设置线绘制的宽度。voidglLineStipple(GLintfactor,GLushortpattern);指定点画模式(线型)。factor指定线型模式中每位的乘数。factor的值在1,255之间,缺省值为1。pattern用16位整数指定位模式。位为1时,指定要绘;位为0时,指定不绘。缺省时,全部为1。位模式从低位开始。,线属性,3.4.2线的绘制,2006,.,6,例如:模式0 x3f07,二进制表示为:0011111100000111,即是从低位起绘3个象素,不绘5个象素,绘6个象素和不绘2个象素来连成一条线。设factor为2,则绘或不绘的象素相应都乘上2。利用如下命令定义上述线型:glLineStipple(2,0 x3f07);glEnable(GL_LINE_STIPPLE);在定义线型后,必须用glEnable()命令激活线型。下图表示用不同的模式和重复因子绘线。当不激活线型时:patternfactor0 xffff1去活线型时调用glDisable(GL_LINE_STIPPLE)。,2006,.,7,2006,.,8,glColor3f(1.0,0.0,0.0);glLineWidth(5.0);glBegin(GL_LINES);glVertex3f(0.0,0.0,0.0);glVertex3f(50.0,50.0,0.0);glVertex3f(50.0,100.0,0.0);glVertex3f(100.0,150.0,0.0);glEnd();,独立线段的绘制:,2006,.,9,glColor3f(1.0,0.0,0.0);glLineWidth(5.0);glBegin(GL_LINE_STRIP);glVertex3f(0.0,0.0,0.0);glVertex3f(50.0,50.0,0.0);glVertex3f(50.0,100.0,0.0);glVertex3f(100.0,150.0,0.0);glEnd();,连接线段的绘制:,3.4.2线的绘制(续),2006,.,10,glColor3f(1.0,0.0,0.0);glLineWidth(5.0);glBegin(GL_LINE_LOOP);glVertex3f(0.0,0.0,0.0);glVertex3f(50.0,50.0,0.0);glVertex3f(50.0,100.0,0.0);glVertex3f(100.0,150.0,0.0);glEnd();,闭合线段的绘制:,3.4.2线的绘制(续),2006,.,11,3.4.3多边形的绘制,三角形的绘制:,2006,.,12,相连三角形的绘制:,3.4.3多边形的绘制(续),2006,.,13,3.4.3多边形的绘制(续),四边形的绘制:,OpenGL中的GL_QUADS图元用来绘制一个四边形。与三角形一样,GL_QUADS_STRIP图元指定一条相互连接的四边形。由于矩形在图形应用中非常普遍,它不必通过glBegin和glEnd之间的顶点来进行绘制,而是通过使用如下的函数:voidglRectsifd(TYPEx1,TYPEy1,TYPEx2,TYPEy2);,2006,.,14,多边形的绘制:,3.4.3多边形的绘制(续),多边形的OpenGL图元是GL_POLYGON,可以用于绘制一个任意边数的多边形。要求多边形满足所有顶点都位于一个平面内,而多边形的各边不能相交。glColor3f(1.0,0.0,0.0);glBegin(GL_POLYGON);glVertex3f(20.0,10.0,0.0);glVertex3f(60.0,30.0,0.0);glVertex3f(70.0,45.0,0.0);glVertex3f(40.0,75.0,0.0);glVertex3f(10.0,60.0,0.0);glEnd();,2006,.,15,在OpenGL中,每个多边形被认为是由两个面组成的:正面和反面。缺省时,在屏幕上以逆时针方向出现顶点的多边形称为正面,反之为背面。用户也可以利用函数glFrontFace()自行设置多边形的正面方向。voidglFrontFace(Glenummode);该函数定义多边形的正面方向。mode:GL_CW(顺时针方向为正面);GL_CCW(逆时针方向为正面,缺省值)。,控制多边形的绘制:,3.4.3多边形的绘制(续),2006,.,16,3.4.3多边形的绘制(续),选择绘制多边形的方式:,利用下面函数可以选择绘多边形的方式。voidglPolygonMode(GLenumface,GLenummode);face控制多边形的正面和背面的绘图方式。GL_FRONT_AND_BACK正面和反面都画GL_FRONT只画正面GL_BACK只画反面,2006,.,17,mode控制绘点、线框或填充多边形。GL_POINT用有一定间隔的点填充GL_LINE只画多边形的边框GL_FILL填充多边形缺省值:glPol
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 司法考试题库及答案邢台
- 顺丰考试题库及答案大全
- 2025年工地安全员高频考点题及答案
- 2025年网络文学IP全产业链的产业升级与价值创造方法论报告
- 2025年打粉机安全培训考核题库
- 社区工作期末考试题库及答案
- 山西省高考试题及答案
- 山东初级注安师考试题库及答案
- 散文阅读中考试题及答案
- 2025年新型环保空调设备订购合同样本
- GB/T 6728-2017结构用冷弯空心型钢
- GB/T 35147-2017石油天然气工业机械动力传输挠性联轴器一般用途
- GB/T 32911-2016软件测试成本度量规范
- GB/T 10125-2021人造气氛腐蚀试验盐雾试验
- T-JSYLA 00007-2022 江苏省智慧公园建设指南
- 员工宿舍的整改方案
- 《压力容器安全技术监察规程》
- 数控加工中心培训课件
- 《思想政治教育专业导论》课程教学大纲
- 自动控制原理全套ppt课件(完整版)
- 智慧燃气安全监管平台建设方案
评论
0/150
提交评论