版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、参考书:分形算法与程序设计,1,第 9 章,三维空间中的分形,9.1 OpenGL简介 9.2三维空间中的Sierpinski地毯,9.3 Sierpinski金字塔 9.4三维空间中Sierpinski海绵,参考书:分形算法与程序设计,2,OpenGL简介,9.1,OpenGL,即开放性图形库(Open Graphics Library),是一个三维的计算机图形和模型库。OpenGL包含120个图形函数,在微机环境下共有5种函数,即基本(或核心)函数、实用函数、辅助函数、Windows专用函数和Win32 API函数。,参考书:分形算法与程序设计,3,OpenGL的基本功能,1 绘制物体 O
2、penGL提供了丰富的基本图元绘制命令,从而可以方便地绘制物体,包括规则的和不规则的。,参考书:分形算法与程序设计,4,OpenGL的基本功能,2 变换 OpenGL提供了一系列基本的变换,如取景变换、模型变换、投影变换及视口变换。,参考书:分形算法与程序设计,5,OpenGL的基本功能,3 光照处理 包括发射光、环境光、散射光和镜面反射光。,参考书:分形算法与程序设计,6,OpenGL的基本功能,4 着色 OpenGL提供了两种物体着色模式,一种是RGBA颜色模式,另一种是颜色索引(Color Index)模式。,参考书:分形算法与程序设计,7,OpenGL的基本功能,5 反走样 在Open
3、GL绘制图形过程中,由于使用的是位图,所以绘制出的图像的边缘会出现锯齿形状,称为走样。为了消除这种缺陷,OpenGL提供了点、线、多边形的反走样技术。,参考书:分形算法与程序设计,8,OpenGL的基本功能,6 融合 为了使三维图形更加具有真实感,经常需要处理半透明或透明的物体图像,这就需要用到融合技术。,参考书:分形算法与程序设计,9,OpenGL的基本功能,7 雾化 正如自然界中存在烟雾一样,OpenGL提供了“fog”的基本操作来达到对场景进行雾化的效果。,参考书:分形算法与程序设计,10,OpenGL的基本功能,8 位图和图像 在图形绘制过程中,位图和图像是非常重要的一个方面。Open
4、GL提供了系列函数来实现位图和图像的操作。,参考书:分形算法与程序设计,11,OpenGL的基本功能,9 纹理映射 在计算机图形学中,把包含颜色、alpha值、亮度等数据的矩形数组称为纹理。而纹理映射可以理解为将纹理粘贴在所绘制的三维模型表面,以使三维图形显得更生动。,参考书:分形算法与程序设计,12,OpenGL的运行环境,10动画 出色的动画效果是OpenGL的一大特色,OpenGL提供了双缓存区技术来实现动画绘制。,参考书:分形算法与程序设计,13,OpenGL的基本函数,1顶点坐标 OpenGL采用有序排列的顶点集合来构造几何图元,而不是将线段、多边形组合起来构造几何图元。 如: gl
5、Vertex2s(2,5); /整数定义的二维坐标 glVertex3f(2,5,7); /浮点定义的三维坐标,参考书:分形算法与程序设计,14,OpenGL的基本函数,2顶点关系 在OpenGL中,同一个几何图元的所有被定义的顶点一起放在glBegin()和glEnd()函数之间,同时定义这些顶点之间的关系。如: glBegin(GL_POLYGON); glVertex2s(0,0); glVertex2s(0,11); glVertex2s(11,14); glVertex2s(14,7); glVertex2s(7,0); glEnd();,参考书:分形算法与程序设计,15,OpenG
6、L的基本函数,3显示列表 OpenGL显示列表(Dispplay List)是由一组预先存储起来的留待以后调用的OpenGL函数语句组成的,当调用这张显示列表时就一次执行表中所列出的函数语句。 创建显示列表 OpenGL用下面的函数组创建显示列表: void glNewList(GLuint list,GLenum mode); void glEndList(void); 执行显示列表 显示列表的执行函数形式如下: void glCallList(GLuint list); 参数list指定被执行的显示列表。,参考书:分形算法与程序设计,16,OpenGL的基本函数,4颜色设置 RGBA模式下
7、的颜色定义 在RGBA模式下,利用glColor*命令来定义当前颜色。glColor*命令有如下几种形式: void glColor3b s i f d ub us ui(TYPE r,TYPE g,TYPE b); void glColor4b s i f d ub us ui(TYPE r,TYPE g,TYPE b,TYPE a); void glColor3b s i f d ub us uiv(TYPE *v); void glColor4b s i f d ub us uiv(TYPE *v); 在颜色索引模式下的颜色定义 通过调用函数glIndex*()从颜色索引表中选取当前颜色
8、。 void glIndex(s f d i)(c:TYPE); void glIndex(s f d i)v(c:PTYPE);,参考书:分形算法与程序设计,17,OpenGL的基本函数,5光照设置 创建光源(Light Source) 光源有许多特性,如颜色、位置、方向等。可以使用下面的函数定义光源: void glLightifv(GLenum light , GLenum pname, TYPE param) 启动光照 在OpenGL中,必须明确指出光照是否有效或无效。如果光照无效,则只是简单地将当前颜色映射到当前顶点上去,不进行法向、光源、材质等复杂计算,那么显示的图形就没有真实感。
9、启动和取消光源的函数如下: glEnable(GL_LIGHTING);/启动光照 gDisable(GL_LIGHTING);/取消光照,参考书:分形算法与程序设计,18,OpenGL的基本函数,6明暗处理 在OpenGL中,用单一颜色处理的称为平面明暗处理(Flat Shading),用许多不同颜色处理的称为光滑明暗处理(Smooth Shading) 。 设置明暗处理模式的函数为: void glShadeModel(GLenum mode);,参考书:分形算法与程序设计,19,OpenGL的基本函数,7材质设置 材质定义 材质的定义与光源的定义类似。其函数为: void glMater
10、ialifv(GLenum face,GLenum pname,TYPE param); 改变材质 在OpenGL中提供了两种方式来改变场景中的材质。 第一种方法是利用函数glMaterial*()来改变材质,但是调用函数glMaterial*()需要同时保存当前矩阵,也就是调用函数glPushMatrix()和glPopMatrix()。 第二种方法是使用函数glColorMaterial(),其形式为: void glColorMaterial(GLenum face,GLenum mode);,参考书:分形算法与程序设计,20,OpenGL的基本函数,8纹理映射 纹理定义 在程序中可以用
11、以下函数定义二维纹理映射: void glTexImage2D(GLenum target,GLint level,GLint components, GLsizei width,Glsizei height,GLint border,GLenum format,GLenum type,const GLvoid *pixels); 纹理控制 OpenGL中控制纹理的函数是: void glTexParameterifv(GLenum target,GLenum pname,TYPE param); 定义纹理坐标 OpenGL坐标定义的函数是: void gltexCoord1 2 3 4s i
12、 f dv(TYPE coords);,参考书:分形算法与程序设计,21,OpenGL的基本函数,9选择与反馈 在OpenGL中,提供了选择和反馈两种方式,以实现对屏幕上的某个物体的信息提供,达到交互的目的。 进行模式选择的函数原型如下: Lint glRenderMode(GLenum Mode); 在进入选择模式之前,必须调用函数glSelectBuffer()来制定选择数组。 在进入反馈模式之前,必须调用函数glFeedbackBuffer()来制定反馈数组。,参考书:分形算法与程序设计,22,OpenGL的基本函数,10帧缓存与动画 帧缓存的组成 OpenGL帧缓存由以下四种缓存组成:
13、颜色缓存(Color Buffer) 、深度缓存(Depth Buffer) 、模板缓存(Stencil Buffer) 、累积缓存(Accumulation Buffer) 。 缓存清除 OpenGL清除缓存操作过程是:先给出要写入每个缓存的清除值,然后用单个函数命令执行操作,传入所有要清除的缓存表。 动画 OpenGL提供了双缓存,可以用来制作动画。也就是说,在显示前台缓存内容中的一帧画面时,后台缓存正在绘制下一帧画面,当绘制完毕,则后台缓存内容便在屏幕上显示出来,而前台正好相反,又在绘制下一帧画面内容。这样循环反复,屏幕上显示的总是已经画好的图形,于是看起来所有的画面都是连续的。,参考书:分形算法与程序设计,23,9.2,三维空间中的Sierpinski地毯,参考书:分形算法与程序设计,24,9.2,三维空间中的Sierpinski地毯,参考书:分形算法与程序设计,25,9.2,三维空间中的Sierpinski地毯,参考书:分形算法与程序设计,26,9.3,Sierpinski金字塔,参考书:分形算法与程序设计,27,9.3,Sierpinski金字塔,参考书:分形算法与程序设计,28,9.3,Sierpinski金字塔,参考书:分形算法与程序设计,29,9.4,Sierpinski海绵,参考书:分形算法与程序设计,30,9.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 学会传播正能量主题班会
- 地理信息技术教学课件
- 电力工程造价从业人员专业能力评价考试(专业技术公共基础)考前模拟试题(西藏2025年)
- 2026年湛江国家级检验检测机构资质认定评审员考试试题及答案
- 2026年心理学研究方法与应用试题
- 2026年食品安全知识竞赛题及答案
- 蛙式打夯机设计
- 2026年湖北省仙桃市农业专业技术职务水平能力测试(农学)全真模拟试题及答案
- 2026年湖北省路桥工程专业技术职务水平能力测试(交通工程正高级)仿真试题及答案
- 2026年初级会计考试题库试题及答案
- 2025年乌兰察布市社区工作者招聘考试真题及答案
- 对外投资合作国别(地区)指南-新加坡(2025年版)
- ISO140012026标准解读课件
- 污水处理设施运维服务投标方案(技术标)
- 比亚迪集团所属行业分析报告
- 2026年关于鲁迅资料的测试题及答案
- 福建省侨情普查工作制度
- 故事写作 课件
- 2026年智慧港口建设报告
- 浙江省启正中学小升初数学期末试卷练习(含答案)
- 2025-2026学年人教版七年级地理下册自然地理环境测试题(含答案解析)
评论
0/150
提交评论