显示卡的性能与API的关系--OpenGL篇
如上所说,许多人也许并不知道OpenGL,OpenGL是做什么用的。实际上,在上世纪90年代,OpenGL可谓大名鼎鼎,如雷贯耳,那时候微软的DirectX还刚刚出现,功能远不能与OpenGL相比,只不过由于自身原因,OpenGL慢慢走向沉默。今天我们将为你详细讲述OpenGL及OpenGL的发展。
OpenGL实际上是一种3D程序接口(即我们常说的3D API),它是3D加速卡硬件和3D图形应用程序之间一座非常重要的沟通桥梁。也可以说,OpenGL是一个功能强大,调用方便的底层3D图形库。遗憾的是,由于平台的局限性等原因,D3D应用至今仍主要集中于游戏和多媒体方面,在专业高端绘图应用方面,老牌的3D API—OpenGL仍是主角。
将OpenGL称之为SGI的OpenGL毫不为过,它源于SGI公司为其图形工作站开发的IRIS GL,在跨平台移植过程中发展成为OpenGL。SGI在1992年7月发布1.0版,后成为工业标准,由成立于1992年的独立财团OpenGL Architecture Review Board (ARB)控制。SGI等ARB成员以投票方式产生标准,并制成规范文档(Specification)公布,各软硬件厂商据此开发自己系统上的实现。只有通过了ARB规范全部测试的实现才能称为OpenGL,现在的ARB投票成员包括SGI、Intel、IBM、nVIDIA、ATi、Microsoft、Apple、3DLabs等业界群英。
OpenGL的发展历程
OpenGL的前身是SGI公司为其图形工作站开发的IRIS GL。IRIS GL是一个工业标准的3D图形软件接口,功能虽然强大但是移植性不好,于是SGI公司便在IRIS GL的基础上开发了OpenGL。OpenGL的英文全称是“Open Graphics Library”,顾名思义,OpenGL便是“开放的图形程序接口”。
1992年7月,SGI公司发布了OpenGL的1.0版本,随后又与微软公司共同开发了Windows NT版本的OpenGL,从而使一些原来必须在高档图形工作站上运行的大型3D图形处理软件,如用于制作电影《侏罗纪公园》、《玩具总动员》、《泰坦尼克号》而大名鼎鼎的Softimage 3D也可以在微机上运用。
1995年OpenGL的1.1版本面市,该版本比1.0的性能有许多提高,并加入了一些新的功能。其中包括改进打印机支持,在增强元文件中包含OpenGL的调用,顶点数组的新特性,提高顶点位置、法线、颜色、色彩指数、纹理坐标、多边形边缘标识的传输速度,引入了新的纹理特性等等。
1997年,由于在Windows 95下大量3D游戏的涌现,游戏开发公司迫切需要一个功能强大,兼容性好的3D图形接口,而当时微软公司自己的3D图形接口DirectX 3.0的3D图形功能实在是糟糕,因而以制作《雷神之锤》等经典3D射击游戏而著名的id公司同其它一些游戏开发公司一道,与软件霸主微软公司对话,强烈要求微软公司在Windows 95中加入对OpenGL的支持。
同时,id公司还以OpenGL为3D图形接口开发了《雷神之锤2》的游戏引擎。《雷神之锤2》上市后大受欢迎,以无以伦比的3D图形特效、身临其境的音响效果等特色,摘取了1997 年由电脑游戏界的权威杂志《PC GAMER》评选的“年度最佳游戏”、“最佳动作游戏”和“最佳网络游戏”三项桂冠。
当时由于硬件限制,《雷神之锤2》只应用了OpenGL的一部分功能。但是《雷神之锤2》获得的巨大成功,使人们第一次在电脑游戏中体会到OpenGL的强大功能,也迫使微软公司最终在Windows 95的OSR2版(俗称Windows 97)和后来的Windows 98中加入了对OpenGL的支持。这样,不但许多支持OpenGL的电脑3D游戏得到广泛应用,而且许多在Windows 95平台上运行的3D图形设计软件如AutoCAD R14、3DS MAX R2等也可以运用支持OpenGL标准的3D加速卡,大大提高其3D图形的处理速度。
今年的7月28日,SGI和ARB公布了最新的OpenGL规格OpenGL 1.5。OpenGL 1.5中包括OpenGL ARB的正式扩展规格绘制语言“OpenGL Shading Language”。该语言将作为即将发布的“OpenGL 2.0”的底核。
OpenGL 1.5的新功能如下:
·顶点Buffer Object:进行顶点配列方式可以提高透视性能
·Shadow功能:增加用来比较Shadow映射的函数
·隐蔽查询(QUERY):为提高Curling性能采用非同步隐蔽测试
·非乘方纹理(Texture):提高mipmap等纹理内存的使用效率
·OpenGL Shading Language v.1.0:用于着色(shader)对象、顶点着色以及片断着色技术(fragment shader )的扩展功能
另外以开发API为宗旨的业内团体Khronos Group于同一天宣布支持嵌入系统用的2D、3D图形规格“OpenGL ES 1.0”。另外Khronos Group还制订了“EGL 1.0”,“EGL 1.0”中制定了在多种操作系统中安装OpenGL ES的标准方法。
OpenGL为ES定义OpenGL的subset profile的规格。考虑到在嵌入式应用软件中使用,减小了内存使用量。当在软件中安装OpenGL ES 1.0时,只需要50KByte的容量。另外,还可以利用硬件实现固定小数点、浮动小数点以及图形加速器。
另外,KhronosGroup公布了用来制作动态播放媒体的API规格“OpenML”的开发组件“Software Development Kit(SDK)for OpenML 1.0”的α版。使用该SDK可以制作用来取得、处理、同步以及播放数码媒体内容的程序。α版支持Windows和Linux,通过Khronos Group的网站免费提供。另外SGI已经公开了该SDK的支持IRIX的版本。