OpenGL是什么?
分析:
OpenGL是OpenGraphicsLib的缩写,是一套三维图形处理库,是该领域的工业标准。计算机三维图形是指用数据描述的三维空间通过计算转换成二维图像并显示或打印出来的技术。
OpenGL是支持这种转换的库。它起源于SGI为其图形工作站开发的IRISGL,在跨平台移植的过程中发展为OpenGL。SGI在1992年7月发布了1.0版本,后来成为工业标准,由1992成立的独立财团openglaarchitecture Explorer Board(ARB)控制。ARB的成员,如SGI,通过投票产生标准,并制定规范文件以供出版。软件和硬件制造商相应地开发他们自己的系统。1995 65438+2月ARB批准版本1.1,最新版本规范为1999年5月采用的1.2.1。
OpenGL被设计成独立于硬件和窗口系统,可在装有各种操作系统的计算机上使用,并能在网络环境下以客户机/服务器模式工作。是专业图形处理、科学计算等高端应用领域的标准图形库。
它在低端应用上的主要竞争对手是微软的Direct3D,它是以COM接口的形式提供的,所以比较复杂。此外,微软拥有该库的版权,目前仅在Windows平台上可用。D3D的优势是速度,但是一些低价显卡可以提供很好的OpenGL硬件加速,所以在3D中使用Direct3D不是特别必要。在专业图形处理方面,尤其是高端应用,基于Direct3D技术的例子还没有,游戏等低端应用也倾向于转向OpenGL。微软在WinNT中对OpenGL的支持是从3.51版本开始的,在Win9x中是从Win95OEMServiceRelease2开始的。
SGI曾经宣布开发OpenGL++。这个图形库最大的特点是面向对象,提供了树形场景支持,大大减少了使用OpenGL处理复杂场景的工作量。后来,SGI宣布将与微软合作开发Windows下一代图形处理系统Ferihant,包括DirectX和OpenGL之间的低级图形处理接口和以场景图支持为特色的高级接口。这一举动让所有人都以为Windows图形处理要过上幸福的生活了。然而,很快,SGI宣布中止合作,撤回旗下科学家,费里汉特基本上死了。SGI表示,终止合作的原因是微软拒绝积极合作,只想将SGI技术并入DirectX。
虽然微软早在WinNT3.51就实现了自己的OpenGL版本,但却拒绝在Win95上提供相应的支持。微软声称API适用于高端应用,而Win95面向普通消费者,所以用处不大。并且基于Win3.x下开发的Wing chart库,开发了后来的DirectX库GameSDK,说这个库是专门为高性能游戏开发设计的。此举在当时的硬件条件下无疑是非常合理的,并很快成为Windows环境下游戏开发的标准API。本质上,该库提供了一种绕过窗口直接访问显存的方法,从而解决了GDI系统性能的缺点。但由于是以COM接口的形式提供,所以相当复杂,不稳定。然而在这个时期,三维图形加速卡开始走向商用和家用。
后来,随着大量游戏开发者呼吁微软积极支持OpenGL,微软终于在OSR2版Win95中集成了OpenGL,并免费为之前版本的Win95提供了单独的OpenGL实现。