| | 透析:显示卡的性能与API的关系--OpenGL篇 |
| | | | | | [文章信息] | | | 作者: | 魏文忠 | | 时间: | 2003-12-12 | | 出处: | 天极Myhard | | 责任编辑: | 寒冬 | |
| [文章导读] | | | 今天许多人也许知道OpenGL是做什么用的。但在上世纪90年代,OpenGL可谓大名鼎鼎。 | |
| |
|
| | | |
|
|
|
|
|
2.可以在客户机/服务器系统中工作,即具有网络功能
这一点对于制作大型3D图形、动画非常有用。例如,《玩具总动员》、《泰坦尼克号》等电影的电脑特技画面就是通过应用OpenGL的网络功能,使120多台图形工作站共同工作来完成的。
由于OpenGL是与硬件无关的3D图形接口,在 Windows、Unix/X-Windows、 MacOS、OS/2等不同版本的窗口相关部分(系统相关)略有差异。由于OpenGL是3D图形的底层图形库,没有提供几何实体图元,不能直接用以描述场景。但是,通过一些转换程序,可以很方便地将AutoCAD、3DS等3D图形设计软件制作的DFX和3DS模型文件转换成OpenGL的顶点数组。
另外,在OpenGL的基础上还有Open Inventor、Cosmo3D、Optimizer等多种高级图形库,适应不同应用。其中,Open Inventor应用最为广泛。该软件是基于OpenGL面向对象的工具包,提供创建交互式3D图形应用程序的对象和方法,提供了预定义的对象和用于交互的事件处理模块,创建和编辑3D场景的高级应用程序单元,有打印对象和用其它图形格式交换数据的能力。
目前OpenGL的发展状况
游戏程序员们曾经对OpenGL的技术和画质推崇倍至,以至于微软在Windows系统中引入OpenGL,并且在Windows平台上出现了Quake II、QuakeIII、重返德军总部等一批优秀的基于OpenGL API的游戏,而同时期的D3D游戏没有哪一款能在画质上超越这些OpenGL游戏的,一直到微软发布DirectX 7,这种情况还是没有发生多大的改变,DirectX只是作为一个能用于快速开发游戏的API而存在着。
但是当微软在2001年发布了DirectX 8以后,局面终于被扭转了,DirectX 8是DirectX发展史上一个里程碑式的产品,它在2D、3D、视频、音频以及交互式输入设备接口方面进行了许多重要的改进,其中,在3D图形处理方面尤其做了划时代的改进,可以说,作为一个游戏API,DirectX 8已经超越了OpenGL。
出现这样的情况决非偶然:OpenGL是由ARB这一官僚机构管理的,官僚主义带来的自然是OpenGL发展的停滞不前,同时由于要考虑到团队中大多数人的利益,以至于在OpenGL 1.0推出后的相当长的一段时间里,OpenGL唯一做的只是增加了一些扩展指令集,这些扩展指令是一些绘图功能,像是ClearCoat、Multisample、视频及绘图的整合工具(某些是通过OpenML的努力而开发出来的,它本身属于OpenGL ARB扩展指令之一)。
这正好给也是ARB成员之一的Microsoft找到了借口,他抱怨ARB对市场的反映极为迟钝,因而抛开OpenGL,倾其所有的开发资源,独自全力投入开发DirectX的工作上。更可笑的是在OpenGL 1.4中的一项Vertex编程框架技术还被同为ARB成员之一的微软指控侵犯了DirectX 8的专利;而Direct3D这边却得到了微软倾尽全力支持,技术更新极快,最终完全超越了OpenGL。
但是OpenGL也并不是完全沉没,而是在默默耕耘,继续走自己的道路。继1.5版后,ARB又为我们展示了具有美好前程的OpenGL 2.0版本。
OpenGL 2.0标准的主要制订者并非原来的SGI,而是逐渐在ARB中占据主动地位的3Dlabs。2.0版本首先要做的是与旧版本之间的完整兼容性,同时在顶点与像素及内存管理上与DirectX共同合作以维持均势。OpenGL 2.0将由OpenGL 1.3的现有功能加上与之完全兼容的新功能所组成(如图一)。借此可以对在ARB停滞不前时代各家推出的各种纠缠不清的扩展指令集做一次彻底的精简。此外,硬件可编程能力的实现也提供了一个更好的方法以整合现有的扩展指令。
|
|
|
|
|
|
|
|