欢迎来到天天文库
浏览记录
ID:15505083
大小:77.50 KB
页数:15页
时间:2018-08-03
《专业图形程序接口opengl的工程运用》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、功能强大的专业图形程序接口OpenGL摘要 OpenGL是个专业的图形程序接口,是一个功能强大,调用方便的底层图形库。OpenGL是个与硬件无关的软件接口,可以在不同的平台之间进行移植。因此,支持OpenGL的软件具有很好的移植性,可以获得非常广泛的应用。目录概述OpenGL现状高级功能OpenGL与DirectX的区别OpenGL编程入门概述 OpenGL是个专业的图形程序接口,是一个功能强大,调用方便的底层图形库。OpenGL的前身是SGI公司为其图形工作站开发的IRISGL。IRISGL是一个工
2、业标准的3D图形软件接口,功能虽然强大但是移植性不好,于是SGI公司便在IRISGL的基础上开发了OpenGL。OpenGL的英文全称是“OpenGraphicsLibrary”,顾名思义,OpenGL便是“开放的图形程序接口”。虽然DirectX在家用市场全面领先,但在专业高端绘图领域,OpenGL是不能被取代的主角。 OpenGL是个与硬件无关的软件接口,可以在不同的平台如Windows95、WindowsNT、Unix、Linux、MacOS、OS/2之间进行移植。因此,支持OpenGL的软件具有
3、很好的移植性,可以获得非常广泛的应用。由于OpenGL是图形的底层图形库,没有提供几何实体图元,不能直接用以描述场景。但是,通过一些转换程序,可以很方便地将AutoCAD、3DS/3DSMAX等3D图形设计软件制作的DFX和3DS模型文件转换成OpenGL的顶点数组。 在OpenGL的基础上还有OpenInventor、Cosmo3D、Optimizer等多种高级图形库,适应不同应用。其中,OpenInventor应用最为广泛。该软件是基于OpenGL面向对象的工具包,提供创建交互式3D图形应用程序的对
4、象和方法,提供了预定义的对象和用于交互的事件处理模块,创建和编辑3D场景的高级应用程序单元,有打印对象和用其它图形格式交换数据的能力。 OpenGL的发展一直处于一种较为迟缓的态势,每次版本的提高新增的技术很少,大多只是对其中部分做出修改和完善。1992年7月,SGI公司发布了OpenGL的1.0版本,随后又与微软公司共同开发了WindowsNT版本的OpenGL,从而使一些原来必须在高档图形工作站上运行的大型3D图形处理软件也可以在微机上运用。1995年OpenGL的1.1版本面市,该版本比1.0的性
5、能有许多提高,并加入了一些新的功能。其中包括改进打印机支持,在增强元文件中包含OpenGL的调用,顶点数组的新特性,提高顶点位置、法线、颜色、色彩指数、纹理坐标、多边形边缘标识的传输速度,引入了新的纹理特性等等。OpenGL1.5又新增了“OpenGLShadingLanguage”,该语言是“OpenGL2.0”的底核,用于着色对象、顶点着色以及片断着色技术的扩展功能。 OpenGL2.0标准的主要制订者并非原来的SGI,而是逐渐在ARB中占据主动地位的3DLabs。2.0版本首先要做的是与旧版本之间
6、的完整兼容性,同时在顶点与像素及内存管理上与DirectX共同合作以维持均势。OpenGL2.0将由OpenGL1.3的现有功能加上与之完全兼容的新功能所组成(如图一)。借此可以对在ARB停滞不前时代各家推出的各种纠缠不清的扩展指令集做一次彻底的精简。此外,硬件可编程能力的实现也提供了一个更好的方法以整合现有的扩展指令。 目前,随着DirectX的不断发展和完善,OpenGL的优势逐渐丧失,至今虽然已有3Dlabs提倡开发的2.0版本面世,在其中加入了很多类似于DirectX中可编程单元的设计,但厂商的
7、用户的认知程度并不高,未来的OpenGL发展前景迷茫。OpenGL现状 OpenGL仍然是唯一能够取代微软对3D图形技术的完全控制的API。它仍然具有一定的生命力,但是SiliconGraphics已经不再以任何让微软不悦的方式推广OpenGL,因而它存在较高的风险。游戏开发人员是一个有着独立思想的群体,很多重要的开发人员目前仍然在使用OpenGL。因此,硬件开发商正在设法加强对它的支持。Direct3D目前还不能支持高端的图形设备和专业应用;OpenGL在这些领域占据着统治地位。最后,开放源码社区(尤
8、其是Mesa项目)一直致力于为任何类型的计算机(无论它们是否使用微软的操作系统)提供OpenGL支持。高级功能 OpenGL被设计为只有输出的,所以它只提供渲染功能。核心API没有窗口系统、音频、打印、键盘/鼠标或其它输入设备的概念。虽然这一开始看起来像是一种限制,但它允许进行渲染的代码完全独立于他运行的操作系统,允许跨平台开发。然而,有些整合于原生窗口系统的东西需要允许和宿主系统交互。这通过下列附加API实现: *GLX
此文档下载收益归作者所有