基于opengl水波模拟_本科毕业论文(编辑修改稿)内容摘要:
现,游戏开发公司迫切需要一个功能强大、兼容性好的 3D 图形接口,而当时微软公司自己的 3D 图形接口 DirectX 功能却是很糟糕。 微软公司最终在 Windows 95 的 OSR2 版和后来的 Windows 版本中加入了对 OpenGL 的支持。 这样,不但许多支持 OpenGL 的电脑 3D 游戏得到广泛应用,而且许多在 3D图形设计软件也可以运用支持 OpenGL 标准的 3d 加速卡 ,大大提高其 3D图形的处理速度。 20xx年的 7 月 28日, SGI和 ARB公布了 OpenGL。 OpenGL OpenGL ARB的正式扩展规格绘制语言 “OpenGL Shading Language”。 OpenGL 的新功包括:顶点 Buffer Object、 Shadow 功能、隐蔽查询、非乘方纹理等。 20xx年 8月, ~OpenGL SGI,而是逐渐在 ARB中占据主动地位的 3Dlabs。 OpenGL Shading Language、新的 shader 扩展特性以及其他多项增强特性。 20xx 年 8 月初 Khronos 工作组在 Siggraph 20xx 大会上宣布了 OpenGL 图形接口规范, shader 语言和其他新增功能将再次未来开放 3D 接口发展指明方向。 OpenGL API 开发代号为 Longs Peak,和以往一样, OpenGL 仍然作为一个开放性和跨平台的 3D 图形接口标准,在 Shader 语言盛行的今天, 增加了新版本的 shader 语言: GLSL ,可以充分发挥当前可编程图形硬件的潜能。 同时, 还引入了一些新的功能,例如顶点矩阵对象,全帧缓存对 象功能, 32bit 浮点纹理和渲染缓存,基于阻塞队列的条件渲染,紧凑行半浮点顶点和像素数据,四个新 8 压缩机制等等。 Open GL 仍然是唯一能够取代微软对 3D 图形技术的完全控制的 API。 它仍然具有一定的生命力,但是 Silicon Graphics 已经不再以任何让微软不悦的方式推广 Open GL,因而它存在较高的风险。 游戏开发人员是一个有着独立思想的群体,很多重要的开发人员目前仍然在使用 Open GL。 因此,硬件开发商正在设法加强对它的支持。 Direct3D目前还不能支持高端的图形设备和专业应用; Open GL 在这些领域占据着统治地位。 最后,开放源码社区(尤其是 Mesa 项目)一直致力于为任何类型的计算机(无论它们是否使用微软的操作系统)提供 Open GL 支持。 08 年 8 月正式公布 版本。 并且得到了 nv的支持,其官方网站上提供针对 N 卡的 sdk 下载。 OpenGL渲染管线 绝大数 OpenGL实现都有相似的操作顺序,一系列相关的处理阶段称为 OpenGL渲染管线。 图 1显示了这些顺序,虽然并没有严格规定 OpenGL必须采用这样的实现,但它提供了一个可靠的指南,可以预测 OpenGL将以什么样的顺序来执行 这些操作。 图 1 OpenGL渲染管道 图 1 显示了 Henry Ford在福特汽车公司采用的装配线方法,它也是 OpenGL处理数据的方法。 几何数据 (顶点,直线和多边形 )所经历的处理阶段包括求值和基于顶点的操作,而像素数据 (像素,图像和位图 )的处理过程侧有所不同。 在最终的像素数据写入到帧缓冲区之前,这两种类型的数据都将经过相同的最终步骤 (光棚化和片断操作 )。 下面,详细地介绍 OpenGL渲染管线的一些关键阶段: 显示列表 任何数据,不管它所描述的是几何图形还是像素, 都可以保存在显示列表 (display list)中,供当前或以后使用。 当然,我们也可以不把数据保存在显示列表中,而是立即对数据进行处理,这种模式也称为立即模式 (immediate mode)。 当一个显示列表被执行时,被保存的数据就从显示列表中取出,就像在立即模式下直接由应用程序所发送的那样。 求值器 所有的几何图元最终都要通过顶点来描述。 参数化曲线和表面最初可能是通过控制点以及成为基函数 (Basic function)的多项式函数进行描述的。 求职器提供了一种方法。 根据控制点计算表示表面的顶点。 这 种方法是一种多项式映射,它可以根据控制点产生表面法线、纹理坐标、颜色以及空间坐标。 显示 列表 计 算 程 序 Ev a l ua to rs 逐 顶点 操作与 图元 装配 光栅化 逐 片断操作 帧缓存 像 素 操作 纹理装配 顶点数据 像 素数据 9 基于顶点的操作 对于顶点数据,接下来的一个步骤就是 基于顶点的操作 ,就是把顶点变换为图元。 有些类型的顶点数据 (例如空间坐标 )是通过一个 4*4的浮点矩阵进行变换的。 空间坐标从 3D世界的一个位置投影到屏幕上的一个位置。 如果启用了高级特性,这个阶段将更为忙碌。 如果使用了纹理,这个阶段还将生成并变换纹理坐标。 如果启用了光照,就需要综合变换后的顶点,表面法线,光源位置,材料属性以及其他光照信息进行光照计算,产生最终的颜 色值。 图元装配 图元装配的一个主要内容就是剪裁,它的任务是消除位于半空间 (halfspace)之外的那部分几何图元,而这个半空间是由一个平面所定义的。 点剪裁就是简单地接受或拒绝顶点,直线或多边形剪裁则可能需要添加额外的顶点,具体取决于直线或多边形是如何进行剪裁的。 在有些情况下,接下来需要执行一个称为透视除法 (perspective division)的步骤。 它使远处的物体看起来比近处的物体更小一些。 接下来所进行的是视口 (viewport)和深度 (z坐标 )操作。 如果启用了剔除功能 (culling)并且该图元是个多边形,那么它就有可能被剔除测试所拒绝。 取决于多边形模式,多边形可能被画成点的形式或者直线的形式。 这个阶段所产生的结果就是完整的几何图元,也就是根据相关的颜色,深度 (有时还有纹理坐标值以及和光棚化处理有关的一些指导信息 )进行了变换和剪裁的顶点。 在 OpenGL的渲染管线中,和单路径的几何数据相比,像素数据所经历的流程有所不同。 首先,来自系统内存的一个数组中的像素进行解包,从某种格式 (像素的原始格式可能有多种 )解包为适当数量的数据成分。 接着,这些数据被缩放、偏移,并根据 一副像素图进行处理。 处理结果先进行截取,然后或者写入到纹理内存,或者发送到光棚化阶段。 如果像素数据时从帧缓冲区读取的,就对他们执行像素转换操作 (缩放、偏移、映射和截取 )。 然后,这些结果被包装为一种适当的格式,并返回到系统内存的一个数组中。 OpenGL有一种特殊的像素复制操作,可以把数据从帧缓冲区复制到帧缓冲区的其他位置或纹理内存中。 这样,在数据写入到纹理内存或者写回到帧缓冲区之前,只需要进行一道像素转换就可以了。 OpenGL应用程序可以在几何物体上应用纹理图像,使它们看上去更为逼真。 如果需要使用多幅纹理图像,把它们放在纹理对象中是一种明智的做法。 这样,就可以很方便地在他们之间进行切换。 有些 OpenGL实现拥有一些特殊的资源,可以加速纹理的处理。 这种资源可能是专用的,高性能的纹理内存。 如果确实拥有这种内存,纹理对象可能会优先进行处理,以控制这种有限和宝贵的资源的使用。 光棚化就是把几何数据和像素数据转换为片断 (fragment)的过程。 每个片断方块对应用于帧缓冲区中的一个像素。 把顶点连接起来形成直线或者计算填充多边形的内部像素时,需要考虑直线和多边形的点画模式,直线的 宽度,点的大小,着色模型以及用于支持抗锯齿处理的覆盖计算。 每个片断方块都将具有各自的颜色和深度值。 在数据实际存储到帧缓冲区之前, 将要执行一系列的操作。 这些操作可能会修改甚至丢弃这些片断。 所有这些操作都可以被启用或禁用。 第一个可能执行的操作是纹理处理。 在纹理内存中为每个片断生成一个纹理单元(texel,也就是纹理元素 ),并应用到这个片断上。 接着可能进行的是雾计算,然后是剪裁 10 测试, alpha测试,模板测试和深度缓冲区测试 (深度缓冲区用于消除被隐藏的表面 )。 如果一个片断无法通过一个启用的 测试,它的连续处理过程可能会被中断。 随后,将要执行的可能是混合,抖动,逻辑操作以及根据一个位掩码的屏蔽操作。 最后,经过完整处理的片断就被绘制到适当的缓冲区,最终成为一个像素并到达它的最终目的地。 计算机图形学 计算机图形学是研究怎样用数字计算机生成、处理和显示图形的一门学科, 1963 年,伊凡 .苏泽兰在麻省理工学院发表了名为《画板》的博士论文,标志着计算机图形学的正式诞生。 此前的计算机主要是符号处理系统,自从有了计算机图形学,计算机可以部分的表现人的右脑功能了,所以计算机图形学的建立具有相当重要的意义。 我国开展计算机图形设备和计算机辅助几何设计方面的研究开始于 20世纪 60年代中后期。 进入 20 世纪 80 年代以来,我国在计算机图形学领域无论在理论研究还是在实际应用方面都取得了可喜的成果。 计算机图形学是伴随着电子计算机及其外围设备而产生和发展起来的,是利用计算机研究图形的表示、生成、处理、显示的学科。 经过 30 多年的发展,计算机图形学已成为计算机科学中,最为活跃的分支之一,并得到广泛的应用。 计算机图形学的研究领域非常广泛,包括几何和自然景象模型的建立、彩色真实感图形的生成、交互技术、人机界面、图形系统标准等。 他 的主要应用范围包括计算机辅助设计与制造、作战指挥和军事训练、计算机动画与艺术以及地形地貌和自然资源图等。 计算机图形学前沿的研究课题包括科学计算的可视化、虚拟现实技术、基于物理规律的几何造型、自然景象的模拟、计算机动画以及利用并行处理技术提高真实感图形的现实处理速度等。 随着计算机系统、图形输入、图形输出设备的发展,计算机图形软件有了很大的发展。 在这基础上,计算机图形学所设计的算法通过了几十年热烈的讨论和探索,也越来越丰富和完善。 计算机图形学设计的算法非常丰富,大致可分为以下几类: (1)基本图元素的生成算 法,如生成直线、圆弧、二次曲线、区域填色、反走样等。 (2)基本图元素的几何变换、投影变换、裁剪等。 (3)图元素(点、线、环、面、体)的求交与分类以及集合运算。 (4)自由曲线和曲面的生成、插值、拼接、分解等。 (5)隐藏面和隐藏线的消除以及具有光照颜色效果的真是图形显示。 (6)不同字体的点阵表示,矢量中、西文字符的生成及变换。 (7)模糊景物的生成。 (8)三维或高维数据场的可视化。 (9)三维形体的实时显示和图形的并行处理。 (10)虚拟现实环境的生成及其控制算法等。 围绕着写算法,多年来发表了很多 论文,有些算法越来越完善,甚至实现了固化。 然而有些算法还不是十分理想,可以进行适当的修改来进一步提高其效率。 MFC 框架 一. MFC 概述 MFC 是一个编程框架 MFC (Microsoft Foundation Class Library) 中的各种类结合起来构成了一个应用程序框架,它的目的就是让程序员在此基础上来建立 Windows 下的应用程序,这是一种相对SDK 来说更为简单的方法。 因为总体上, MFC 框架定义了应用程序的轮廓,并提供了用户接口的标准实现方法,程序员所要做的就是通过预定义的接口把具 体应用程序特有的东西填入这个轮廓。 Microsoft Visual C++提供了相应的工具来完成这个工作: AppWizard 可以用来 11 生成初步的框架文件(代码和资源等);资源编辑器用于帮助直观地设计用户接口;ClassWizard 用来协助添加代码到框架文件;最后,编译,则通过类库实现了应用程序特定的逻辑。 封装 构成 MFC 框架的是 MFC 类库。 MFC 类库是 C++类库。 这些类或者封装了 Win32 应用程序编程接口,或者封装了应用程序的概念,或者封装了 OLE 特性,或者封装了 ODBC和 DAO 数据访问的功能,等等,分 述如下。 对 Win32 应用程序编程接口的封装 用一个 C++ Object来包装一个 Windows Object。 例如: class CWnd是一个 C++ window object,它把 Windows window(HWND)和 Windows window 有关的 API 函数封装在 C++ window object的成员函数内,后者的成员变量 m_hWnd 就是前者的窗口句柄。 对应用程序概念的封装 使用 SDK 编写 Windows 应用程序时,总要定义窗口过程,登记 Windows Class,创建窗口,等等。 MFC 把许多类似的处理封装起来,替程序员完成这些工作。 另外, MFC 提出了以文档 视图为中心的编程模式, MFC 类库封装了对它的支持。 文档是用户操作的数据对象,视图是数据操作的窗口,用户通过它处理、查看数据。 对 COM/OLE 特性的封装 OLE 建立在 COM 模型之上,由于支持 OLE 的应用程序必须实现一系列的接口( Interface),因而相当繁琐。 MFC 的 OLE 类封装了 OLE API 大量的复杂工作,这些类提供了实现 OLE 的更高级接口。 对 ODBC 功能的封装 以少量的能提。基于opengl水波模拟_本科毕业论文(编辑修改稿)
相关推荐
系统模型 确定运行仿真 选择需要建模的方面 理解仿真目的 理解系统 系统结果精确。 是 结果足够详细。 结果统计可用。 否 否 否 结束 基于 OPNET 的无线传感器网络路由仿真与研究 11 图 16 OPNET 仿真流程图 第二章 无线传感器网络路由研究 无线传感器网络路由概述 无线传感器网络与传统有线网络的路由具有很大的差别。 尽管它和无线自组织网络都是无线自组织多跳网络
用这种方法的初衷主要是想尽可能的展示 OpenGL的一些基本功能 程序的主要功能 该程序主要是基于 OpenGL,实现对飞行器飞行过程的仿真,模拟现实过程中飞机飞行的场景以及对飞机进行 具体的操作和控制。 本论文研究重点 本文研究的重点主要是利用 OpenGL模拟现实中飞机的飞行场景以及对飞机进行操作和控制,重点是各种变换的体实现以及场景的绘制过程,还有飞机飞行过程中的一些列控制
MFC 的基础上进一步实现了皮肤、渐变风格、多顶层窗口程序、属性列表等较受欢迎的功能;同时,在 C++在线社区中,很大一部分开放的源代码也是基于 MFC 的。 VC++产品 版本 与 MFC 版本 如下: 表格 1 VC++产品版本与 MFC 版本 MFC 特点 封装 构成 MFC 框架的是 MFC 类库。 MFC 类库是 C++类库。 这些类或者封装了 Win32 应用程序编程接口
灰度 图像 中,由于 其 本身计算公式的影响,噪声点是肯定存在 于 其中的,并且 对图像的质量有很大的影响。 作为一种 对 图像 进行 平滑去噪的手段,中值滤波既可第 3 章 车辆图像的处理 9 以去除孤点噪声点, 也可以保持图像的边缘特性, 适于光线条件较好的环境。 中值滤波是 一种以 排序统计理论 为基础 的 非线性信号处理技术,它的作用是能够 有效抑制噪声。 它是一种 和卷积相似的
( Data)区。 其中,信号段的速率位以及长度位决定着数据的比特率,进而决定其调制方式,编码速率等一系列参数值。 如图 22 所示, OFDM 的前导训练序列( Preamble Training Symbol) 包括 10 个短训练序列( Short Training Symbol)、 2 个长训练序列( Long Training Symbol)。 前导训练序列用来做系统的同步、信道估计
得到精确的实验结果打好基础。 本试验中,在测试场地所 采集到的车辆图片,由于场地和环境、天气等因素的影响,存在这许多的噪声,所以需要对图像进行平滑处理才能使车辆的轮廓保持清晰,同时还要除去图像中的高频噪声。 采用中值滤波,能实现这一目的。 中值滤波器在滤除长尾叠加噪声和叠加白噪声时能够取得较好的效果。 为了使中值滤波在更多的场合运用 ,人们对它进行了很多的算法改进 ,如一种改进就是权重中值滤波