您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 第1章-OpenGL与图形可视化概述
OpenGL高级编程与可视化系统开发(高级编程篇)OpenGL是最近几年发展起来的一个性能卓越的开放式三维图形标准,利用它可以创作出具有照片质量的、独立于窗口系统、操作系统和硬件平台的三维彩色图形和动画。目前,OpenGL在可视化系统、虚拟现实系统和三维游戏方面得到了广泛应用。本书及其姊妹篇的主要内容是介绍如何利用OpenGL图形库开发可视化应用系统,主要以实例的方式讲述一些特殊可视化效果的编程方法,包括地形、云彩、海浪、烟雾、粒子系统、飞行器尾焰等,掌握这些特效的制作对于开发高逼真度图形非常重要。目录第1章OpenGL与图形可视化概述第2章OpenGL编程基础第3章外部三维图形文件的输入与处理第4章三维地形的模拟第5章蓝天白云的模拟第6章星空的模拟第7章水的波动的模拟第8章粒子系统的模拟第9章碰撞检测编程第10章LOD技术编程第11章火焰的模拟第12章爆炸效果的模拟第13章霓虹效果的模拟第14章对象捕捉的编程第15章自然现象的模拟第16章OpenGL实现3D屏幕保护程序本章各小结目录1.1图形可视化概述1.2OpenGL的发展1.3OpenGL2.0的新技术1.4OpenGL基本操作1.5OpenGL图形的实现1.6OpenGL开发库的基本组成1.7OpenGL程序运行方式1.1图形可视化概述所谓可视化(Visualization),《牛津英语词典》解释为“构成头脑情景的能力或过程,或不可直接觉察的某种东西的视觉”。此术语亦指本来不可见的东西成为可见图像的过程,X光片即为其例。有人指出:可视化是一系列的转换,这种转换将原始模拟数据转换成可显示的图像,这种转换的目的在于将信息转换成可被人类感应系统所领悟的格式。可视化成为一种技术与方法应用于有关科学和工程技术各个领域,开始于利用计算机图形来加强信息的传递和理解。随后,计算机图像处理技术和计算机视觉也成功地用来处理各类医学图像和卫星图片,以帮助人们理解和利用各类图像数据。1998年2月由B.H.McCormick等根据美国国家科学基金会召开的“科学计算可视化研讨会”的内容撰写的一份报告中正式提出了“科学计算可视化”(VisualizationinScientificComputing,简称ViSC)的概念,从此标志着一门新的可视化学科的问世。科学计算可视化的产生是当代科学技术飞速发展的结果,而推动科学可视化这一新的研究方向发展的一个重要因素就是实现科学计算过程可视化方面的需求。科学家使用计算机进行计算时,不仅仅要对最终结果进行解释,而且希望能对计算的中间结果进行解释,即希望对整个计算过程进行实时的监控,例如,改变其参数、调整其显示的分辨率及视觉的效果等。对此,科学计算可视化提供了帮助科学家实现其驾驭计算过程模型研究系统行为的一个定量分析过程,在这个过程中无论是各子系统的运行流程还是系统的总体控制都是由大量计算数据所表现和完成的,其实现仍是一个科学计算过程。这样就决定了科学计算可视化技术在系统仿真方法领域中广泛应用的必然性,并最终导致可视化仿真(VisualSimulation)的出现。科学计算可视化、计算机动画和虚拟现实是近年来在计算机图形学领域内3大活跃的发展方向,它们的技术核心都是三维真实感图形。无论是丝丝入扣的机械零件设计、惊心动魄的虚拟战场演习,还是如同身受的3D游戏,各种生动而精妙的图形应用使人目不暇接,计算机似乎为人们打开了一个五彩缤纷的第四维空间,而OpenGL正是这个“缤纷世界”的构造者之一。1.2OpenGL的发展1.2.1关于OpenGLOpenGL的前身是SGI公司为其图形工作站开发的IRISGL。IRISGL是一个工业标准的3D图形软件接口,功能虽然强大但是移植性不好,于是SGI公司便在IRISGL的基础上开发了OpenGL。OpenGL的英文名称是OpenGraphicsLibrary,顾名思义,OpenGL便是“开放的图形程序接口”。SGI在1992年7月发布OpenGL1.0版,后来成为工业标准,由成立于1992年的独立财团OpenGLArchitectureReviewBoard(ARB)控制。SGI等ARB成员以投票方式产生标准,并制成规范文档公布,各软硬件厂商据此开发自己系统上的实现。只有通过了ARB规范全部测试的实现才能称为OpenGL,现在ARB投票成员包括SGI、Intel、IBM、nVIDIA、ATi、Microsoft、Apple、3DLabs等业界群英。计算机硬件性能的提高和OpenGL本身的不断发展,使得OpenGL不再只属于专用图形工作站。如今,开发人员可以在各种硬件平台利用OpenGL进行图形软件开发。OpenGL可以运行在当前各种流行操作系统之上,如MacOS、Unix、Windows95/98、WindowsNT/2000、Linux、OPENStep、Python、BeOS等。各种流行的编程语言都可以调用OpenGL中的库函数,如C、C++、Fortran、Ada、Java。OpenGL完全独立于各种网络协议和网络拓扑结构。目前,Microsoft公司、SGI公司、ATT公司的Unix软件实验室、IBM公司、DEC公司、SUN公司、HP公司等几家在计算机市场占主导地位的大公司都采用了OpenGL图形标准。值得一提的是,由于Microsoft公司在WindowsNT和Windows95/98中提供OpenGL标准,使得OpenGL在微机中得到了广泛应用。尤其是在OpenGL三维图形加速卡和微机图形工作站推出后,人们可以在微机上实现CAD设计、仿真模拟、三维游戏等,从而使得应用OpenGL及其应用软件来创建三维图形变得更有机会、更为方便。1.2.2OpenGL1.X回顾自从90年度初以来,OpenGLAPI就一直是专业3D制图技术中的重要组成部分,从专业的电影特效制作到游戏,在很多领域中OpenGL都大显身手,当时用的就是OpenGL1.X标准。在计算机3D领域,OpenGL之所以能很快抛开其他竞争对手而流行开来,很大程度上是由于从一开始OpenGL就被设计成独立于硬件和操作系统的3DAPI。所以OpenGL本身并不拘泥于操作系统的种类,可运行在采用不同操作系统的各种计算机上,并能在网络环境下以客户/服务器模式工作,于是,自然而然地OpenGL就成了专业图形处理、科学计算等高端应用领域的标准图形API。1992年7月,SGI公司发布了OpenGL的1.0版本,随后又与微软公司共同开发了WindowsNT版本的OpenGL,从而使一些原来必须在高档图形工作站上运行的大型3D图形处理软件,如用于制作电影《侏罗纪公园》、《玩具总动员》、《泰坦尼克号》而大名鼎鼎的Softimage3D也可以在微机上运用。1995年OpenGL的1.1版本面市,该版本比1.0的性能有许多提高,并加入了一些功能。其中包括改进打印机支持,在增强元文件中包含OpenGL的调用,顶点数组的新特性,提高顶点位置、法线、颜色、色彩指数、纹理坐标、多边形边缘标识的传输速度,引入了新的纹理特性等。1999年4月,SGI和ARB公布了1.2版本的OpenGL标准,这是使用软件实现OpenGL三维图形处理的最高版本,以后的OpenGL版本都需要硬件的支持。2001年8月17日,SGI和ARB公布了1.3版本的OpenGL标准,其主要技术特点包括立方体纹理贴图,应用于点、线和多边形的独立反锯齿渲染的多重采样以及其他一些有关纹理的技术。2002年7月17日,SGI和ARB公布了OpenGL1.4规范。该版本带有增强图形质量等级和真实性的新型特性及功能设计,是业界领先的2D、3D图形API交叉平台的代表。为仍然保持完整的向下兼容性,ARB开始让OpenGL2.0加入可以提高目前及将来图形架构可编程程序性效果的高级语言。2003年7月28日,SGI和ARB公布了OpenGL1.5规范。OpenGL1.5中包括OpenGLARB的正式扩展规格绘制语言——OpenGLShadingLanguage。该语言将作为即将发布的OpenGL2.0的底核。1.2.3从1.X到2.0继1.5版本后,ARB又展示了具有美好前程的OpenGL2.0版本。2004年8月12日,ARB发布了OpenGL2.0版标准。OpenGL2.0标准的主要制订者并非原来的SGI,而是逐渐在ARB中占据主动地位的3Dlabs。OpenGL2.0标准要求图形芯片广商需要专门开发支持OpenGL2.0的驱动程序,同时也要求编程者遵循OpenGL2.0标准,这样编写出来的程序能正确地在ATi、nVIDIA和Intel图形芯片硬件上运行。可编程着色语言是OpenGL2.0的一大主要功能,但除此之外OpenGL2.0还有其他几项重要的功能,包括顶角处理器、区段处理器、封装和解封装运算、数据移动与内存管理。顶角处理器功能在于照明、材质和几何图形的弹性;区段处理器功能为材质存取、内插器与像素运算;封装和解封装运算的目的在于将应用像素转换成一致性的像素群数据流;数据移动与内存管理则是为了增进效能,数据移动量必需减至最低并且能消除为增进数据流量而产生的数据备份,从而大幅度提高性能。1.3OpenGL2.0的新技术1.3.1OpenGL2.0由来OpenGL2.0标准的主要制订者并非原来的SGI,而是逐渐在ARB中占据主动地位的3Dlabs。3Dlabs认为OpenGL1.X面临的主要问题是:(1)系统和图像架构自1992年来有了重大改变,以Glide和DirectX为主的游戏3DAPI开始成为家用市场的主流,很显然,OpenGL没有跟上节奏,自始至终都未能在家用游戏市场获得足够影响力。(2)现在的显卡功能和性能已经越来越先进,但OpenGL的函数却无法发挥出这些优秀硬件的性能,所以说目前的OpenGL1.X已经落后于今天。。(3)易用性上落后于其他3DAPI1.3.2OpenGL2.0特点与新技术1.兼容性2.OpenGL2.0的Shading语言3.扩展性4.可编程性5.多渲染目标支持(MultipleRenderTargets)6.对非二次幂纹理技术的支持7.支持点纹理(PointSprites)8.支持双面模板(Two-SidedStencil)技术9.增强数据管理性能在OpenGL中的数据类型主要有顶点数据(色彩、正规、位置、用户定义等)以及图像数据(材质、图像、像素缓冲区)。OpenGL2.0提供了更好的数据移动和内存管理功能,加强了应用程序对数据移动的控制能力和更好的顶点处理能力,能消除为增进数据流量而产生的数据备份,大幅度提高性能。1.4OpenGL基本操作OpenGL作为一个性能优越的图形应用程序设计界面(API),适用于广泛的计算机环境。从个人计算机到工作站和超级计算机,OpenGL都能实现高性能的三维图形功能。因此,OpenGL已成为目前的三维图形开发标准,是从事三维图形开发工作的技术人员所必须掌握的开发工具。客观世界和各种事物的形状虽然千变万化,但用计算机将之描述出来却只需要把一系列基本操作组合起来。OpenGL提供了以下基本操作。1.绘制物体真实世界里的任何物体都可以在计算机中用简单的点、线、多边形来描述。OpenGL提供了丰富的基本图元绘制命令,从而可以方便地绘制物体。2.变换可以说,无论多复杂的图形都是由基本图元组成并经过一系列变换来实现的。OpenGL提供了一系列基本的变换,如取景变换、模型变换、投影变换及视口变换。3.光照处理正如自然界不可缺少光一样,绘制有真实感的三维物体必须做光照处理。4.着色5.反走样6.融合7.雾化8.位图和图像9.纹理映射10.动画1.5OpenGL图形的实现1.5.1OpenGL体系结构OpenGL是一套图形标准,它严格按照计算机图形学原理设计而成,符合光学和视觉原理,非常适合可视化仿真系统。首先,在OpenGL中允许视景对象用图形方式表达,如由物体表面顶点坐标集合构成的几何模型,这类图形数据含有丰富的几何信息,得到的仿真图像能充分表达出其形体特征;而且在
本文标题:第1章-OpenGL与图形可视化概述
链接地址:https://www.777doc.com/doc-5485689 .html