图形世界分裂的两派——理清Direct3D和OpenGL的脉络

计算机三维图形是指将用数据描述的三维空间经过计算转换成二维图像并显示或打印出来的技术,API(Application Programming Interface)即“应用程序接口”是链接应用程序与操做系统、实现对计算机硬件控制的纽带,Direct3D和OpenGL是目前的两大3D图形 API,要在你的3D显卡上进行3D特效的制做、实现都必须经过它们(Vooodoo迷们确定对Glide接口记忆尤深,惋惜已随着3dfx的倒闭而做古,其它还有Heidi等接口)。关于D3D和OpenGL的理论知识能够写一大堆厚厚的书,在这里我只为你们简单介绍一下基础知识,有兴趣深刻研究的朋友能够本身上网查询相关资料。

Direct3D(D3D)


Direct 3D是基于微软的通用对象模式COM(Common Object Mode)的3D图形API。它是由微软(Microsoft)一手树立的3D API规范,微软公司拥有该库版权,它全部的语法定义包含在微软提供的程序开发组件的帮助文件、源代码中。Direct3D是微软公司DirectX SDK集成开发包中的重要部分,适合多媒体、娱乐、即时3D动画等普遍和实用的3D图形计算。自1996年发布以来,Direct3D以其良好的硬件兼容性和友好的编程方式很快获得了普遍的承认,如今几乎全部的具备3D图形加速的主流显示卡都对Direct3D提供良好的支持。但它也有缺陷,因为是以 COM接口形式提供的,因此较为复杂,稳定性差,另外,目前只在Windows平台上可用。



做为微软DirectX技术的组件之一,Direct 3D也随着DirectX的升级而不断更新,同时在微软的全力扶植下,Direct 3D技术的发展速度极快,DirectX 7:正式支持硬件T&L(光影变换)、DirectX 8:对Pixel Shader(像素着色器)Vertex Shader(顶点着色器)的支持、DirectX 9:提供2.0版本的可编程顶点和像素着色模式,显卡硬件厂商也纷纷以对最新的D3D特效的硬件支持为卖点。遗憾的是,因为平台的局限性等缘由,D3D应用至今仍主要集中于游戏和多媒体方面,专业高端绘图应用方面,老牌的3D API---OpenGL还是主角。

OpenGL


OpenGL的英文全称是“Open Graphics Library”即“开放的图形程序接口”,它是计算机工业标准应用程序接口,主要用于定义二维三维图形。

OpenGL是一套底层三维图形API,之因此称之为底层API,是由于它没有提供几何实体图元,不能直接用以描述场景。但经过一些转换程序,能够很方便的将AutoCAD、3DS等图形设计软件制做的DFX和3DS模型文件转换成OpenGL的顶点数据。

OpenGL是与硬件无关的软件接口,使用它图形软件生产厂商再不用为各类不一样的机型开发设计不一样的软件,只要操做系统使用了OpenGL适配器就能够达到相同的效果,它是一个开放图形库,目前在Windows、MacOS、OS/二、Unix/X-Windows等系统下都可使用,且仅在窗口相关部分(系统相关)略有差别,所以具备良好的可移植性,同时调用方法简洁明了,深受好评,应用普遍。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等业界群英。2001年8月ARB批准了1.1版本,最新版规范是2002年7月24日经过的1.4版本。

看完了上面关于D3D和OpenGL的介绍,可能会给人这样一种印象:D3D和OpenGL井水不犯河水,一个定位于高端工业标准,一个定位于低端娱乐,互不相干,但其实它们暗底下早就已经开始在较劲了。

虽然早在WinNT 3.51 时代,Microsoft就已经实现了它的OpenGL 版本,但却不愿随其Windows95 提供,称该API 只适合高端应用,而Win95面向通常消费者,用不到。但后来大名鼎鼎的ID Software 的高手,DOOM、Quake之父John Carmack在开发下一代三维图形引擎时戏称Direct 3D为可怕的、支离破碎的API,并极力建议采用OpenGL,此后以他为表明的一大批游戏开发人员开始多方呼吁MS积极支持OpenGL。 Microsoft终于在Win95的OSR2版本里集成了OpenGL。

1999年SGI宣布与Microsoft合做开发Ferihant,即Windows的下一代图形处理体系,包括DirectX与OpenGL的低级图形处理接口和以场景图支持为特色的高级接口,而且就此中止对其在Windows下的OpenGL实现的支持以示决心。此举举世瞩目,你们都觉得 Windows图形处理快要过上幸福生活了,然而,不久,SGI宣布停止合做,并撤回派出的科学家,Ferihant基本上夭折。SGI 称终止合做的缘由是Microsoft不愿积极合做,光想把SGI 的技术合并进DirectX,真正内幕不详。不过以SGI在图形处理界的老大地位来讲,仍是有几分可信度的,由于Microsoft最初支持OpenGL 就不积极。



因为要考虑到团队中大多数人的利益,由ARB架构检查委员会维护的OpenGL老是停滞不前,惟一的进展仅是OpenGL扩展指令的推出。这些扩展指令是一些绘图功能,像是ClearCoat、Multisample、视频及绘图的整合工具(某些是经过OpenML的努力而开发出来的,它自己属于 OpenGL ARB扩展指令之一)。这正好给也是ARB成员之一的Microsoft找到了借口,他抱怨ARB对市场的反映极为迟钝,于是抛开OpenGL,顷其全部的开发资源,独自全力投入使DirectX成为高端绘图、与游戏开发API的工做上。

D3D和OpenGL的互相渗透也早已初露端倪,你能够在市面上看到很多采用OpenGL的游戏如QuakeIII、重返德军总部等等,也能够看到Direct 3D凭着自身的优点,在3DS Max上渐渐超越OpenGL,关于这方面具体的介绍会在文章后面部分讲到。

OpenGL与DirectX表明着绘图世界分裂的两派。
[它们如何工做?]

前面咱们已经看到,因为种种缘由,咱们不得不接受两个3D API的现实。虽然如此,显卡对D3D和OpenGL的支持却不是分裂的,聪明的硬件厂商有办法让它的显示芯片很完美的同时提供对D3D和OpenGL的硬件支持。说到这里,咱们不得不感谢nVIDIA,除了对D3D的支持,从它的Riva128芯片组开始,nVIDIA就提供对OpenGL的极佳的支持。如今,咱们的主板上没必要插上Direct3D和OpenGL两块显卡,也没必要不时把VGA接口从一块显卡换到另外一块显卡,可以避免这样恐怖的情景,这真是值得欣慰的。还记得吗?Voodoo让2D和Glide统一的方式是插两块显卡再用一根信号链接线将它们连起来。

游戏程序员们曾经对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,D3D 8已经超越了OpenGL。出现这样的状况决非偶然:OpenGL是由ARB这一官僚机构管理的,官僚主义带来的天然是OpenGL发展的停滞不前,以致于在OpenGL 1.0推出后的至关长的一段时间里,OpenGL惟一作的只是增长了一些扩展指令集,好笑的是最新的OpenGL 1.4中的一项Vertex编程框架技术还被同为ARB成员之一的微软指控侵犯了DirectX 8的专利;而Direct3D这边却获得了微软倾尽全力支持,技术更新极快。不超越OpenGL才怪呢。

DirectX 7在处理3D的时候是遵循一种传统的方式:

CPU顶点数据---〉 T&L引擎---〉裁减/三角形设置/光栅化---〉多纹理混合处理---〉雾混合---〉透明度/模板和深度测试---〉帧缓冲

上面是传统(如DirectX 7和OpenGL 1.2)3D图形处理流水线的状况,虽然这种架构在多年的实践中被证实是一种高效率的3D图形处理方式,在硬件上容易实现,编程也相对简单。可是采用这种方式,软件开发人员不可能干预3D图形处理的过程,他们唯一要作的工做就是将硬件支持的各类效果事先规划好,再送入3D流水线进行处理。3D图形处理器所能完成的工做在硬件设计好之后就不能被改变了。能够说这种结构在很大程度上制约了软件开发者的想象力和创造力。而DirectX 8在传统3D图形处理流水线中的两个地方进行了改进,增长了“可编程”特性:

CPU顶点数据---〉 Vertex Shader、T&L引擎---〉裁减/三角形设置/光栅化---〉Pixel Shader、多纹理混合处理---〉雾混合---〉透明度/模板和深度测试---〉帧缓冲

上面就是DirectX 8可编程3D图形处理流水线的示意图。与过去的处理方式相比,DirectX 8对两个部分进行了改进:一个可编程的Vertex Shader(顶点着色引擎)代替了过去的几何变换和光源处理(T&L)引擎;而可编程的Pixel Shader(像素着色引擎)则加入了过去的纹理处理流水线。

固然将来的走向还有可能变化。采用像素着色与顶点着色的缺点,在于并没有标准的可编程能力供绘图硬件之用,以致于DirectX 9未正式出现以前,两大GPU制造商Nvidia与ATI在DirectX的运用上已经分道扬镳了,这可能会对Direct3D产生不利的局面。 OpenGL则不甘示弱,即将出台的OpenGL 2.0会试图将稳定性及开放标准,带至可编程绘图及GPU上,极可能再次全面超越DirectX。一些人怀疑Microsoft声称拥有OpenGL 2.0部分功能专利权,OpenGL 2.0将是OpenGL下一个重要修正版。

毫无疑问,目前的市场上,娱乐级的3D显卡竞争是最激烈的,目前可以彻底硬件支持DirectX 8的显卡主要有:nVIDIA的Geforce3以上、ATi的Radeon8500以上级别的显卡以及SiS的Xabre、Matrox Parhelia-512等其它厂商的显卡。而考虑到性价比等因素,只有nVIDIA、ATi两大显卡领域的领头羊是最佳选择。要想发挥nVIDIA、 ATi的3D性能,用好它们的驱动程序也是极其重要的,关于nVIDIA、ATi驱动程序版本及D3D、OpenGL支持状况、设置界面咱们会在后面的应用篇讲到。
[细谈D3D、OpenGL]

若是你对各显卡硬件厂商系列显卡的发展史知之甚少,识别一块显卡对D3D和OpenGL的支持状况,最直接的方法就是看它的规格说明。

以这块丽台Quadro4 550 XGL专业显卡为例:


丽台Quadro4 550 XGL

随卡的说明书上标明“丽台Quadro4 550 XGL的产品特性:硬体叠覆平面、硬体防锯齿线条、双面投影、全景防锯齿、第二代闭塞选择、第二代光速记忆体架构、单一显示器支援 2048x153六、第二代nfiniteFX引擎、硬体支援Microsoft DirectX 8 和 OpenGL 1.3。”很清楚,这是一块硬件支持DirectX 8和OpenGL 1.3的Quadro4核心的显卡,千万不要被JS的花言巧语蒙骗了。

让咱们先选择一款如今最流行的《魔兽争霸III》游戏来试试D3D和OpenGL吧。《魔兽争霸III》是今年刚推出的全3D的游戏,《魔兽争霸III》默认启动DX8.1的D3D模式,但还有一种模式就是OpenGL的3D模式, 并非暴雪公司不肯意设它为主要模式,而是OpenGL是属于专业三维,有一部分游戏显卡还不支持或不彻底支持这个功能。要想打开OpenGL模式,咱们须要编辑一下《魔兽争霸III》的快捷方式,在exe文件后面加上-opengl参数,再运行快捷方式进入游戏便可。要想返回D3D模式,也只要把- opengl参数去掉便可。


D3D截图


OpenGL截图

OpenGL模式与D3D模式相比,惟一比较明显的就是字体变得有些模糊。


D3D截图


OpenGL截图

从游戏截图中咱们能够看到D3D和OpenGL模式下,游戏画面几乎没有任何区别。设计两个API的做用在于,在你的显卡运行某个API出现贴图错误或者或者运行速度跟不上时能够试着切换另外一个API来纠正,听说在OpenGL运行《魔兽争霸III》并在控制面板中启用OpenGL的"MIP线性过滤功能 "(MIP就是快速线性图像处理)能够提高游戏速度10%。
[再聊专业应用]

再来看看D3D和OpenGL在3DS MAX 5.0中的表现(使用显卡:Geforce3 Ti500)。

3D Studio MAX 5.0是Discreet公司今年6月份发布的最新三维动画创做软件。3DS MAX在全球有数以百万计的使用者,超过了其它几种主要3D动画软件的用户总数。同时,3DS MAX也是在专业软件中为用户考虑最多的软件之一,在它支持的图形标准上就能够看出这一点。3DS MAX共支持4种3D显示接口,分别是Heidi、OpenGL、Direct3D和 Custom。其中Heidi是由AutoDesk公司本身开发的3D API,缺省状况下采用软件方式进行3D模型的显示,虽然可以显示的效果有限,不过因为Heidi的效率出奇的高,所以它对于显卡硬件功能和性能较弱的用户来讲仍是不错的。OpenGL是目前主流的3D API,3DS MAX毫无保留的对此提供了支持。OpenGL效率很高,它能够很好的利用硬件性能(包括硬件T&L)来加速模型的显示。在DirectX 8未推出之前,OpenGL也是可以显示最多效果的3D API。在3DS MAX中,Direct3D过去主要是为了使不支持OpenGL的低端显卡可以用来对动画制做进行加速。不过,因为过去Direct3D的效率不高,功能有限,并且采用这种方案的用户也很少,所以长期以来没有获得足够的重视。直到支持DirectX 8的3DS MAX 4和Geforce3显卡的推出,才使这种状况发生了极大的变化。和以前的4.X系列不一样的是,MAX 5.0已经把一些基本的硬件Vertex、Pixel Shader Plug-in默认地加载了,当采用Direct 3D驱动模式的时候,咱们就能应用上硬件Shader带来的好处了。在3D Studio MAX 5.0目录的scenes、Version5Features、DirectXFeatures文件夹下有两个应用了DirectX 8特性的模型,它们利用了Pixel Shader的贴图,表现出了极其逼真的环境反射效果等(详见下图)。这样的实时渲染效果已经极其接近于最终的渲染效果,这是目前的标准OpenGL接口所作不到的。

若是你使用的是nVIDIA Quadro系列的显卡,也能够考虑用基于OpenGL的专业的MAXtreme来代替标准的OpenGL接口,与3DS MAX提供的标准OpenGL接口相比,MAXtreme可以提供更多的效果和更好的性能,如高质量透明度、真实感受的雾化效果、各类纹理过滤方式等。另外,MAXtreme对于显示的加速做用是十分明显的,在MAXtreme中打开Triangle Strip选项能够使复杂线框模式下显示性能提升50%以上。



3DS MAX共支持4种3D显示接口,支持DirectX 8.1(配合Geforce3以上显卡)




3DS MAX 5.0的D3D和OpenGL设置窗口









biplane.max模型的DirectX 8和标准OpenGL的实时显示效果



TigerTank.max模型的DirectX 8实时显示效果



TigerTank.max模型的标准OpenGL实时显示效果

关于OpenGL和D3D的设置后的效果比较以及产生画质差别的原理分析:两大API各有本身的特性,有相同又有不一样之处,就好像子集与交集。好比 OpenGL 1.4的新功能包括深度纹理和阴影纹理,能够支持实时引擎和相关图象渲染技术,一个Vertex编程框架,支持用户定义几何,光照和阴影程序的阶段设置,支持高级通常应用Shading语言,支持自动纹理mipmap生成,一样的加强功能还包括多绘图阵列,Windows光栅定位,用户定义雾表坐标轴和第二个颜色,点参数,LOD等等功能,而DirectX 8.1也包括Vertex编程。有兴趣详细比较的朋友能够访问如下连接:

http://www.opengl.org/developers/documentation/OpenGL14.html

http://msdn.microsoft.com/library/default.asp?url=/nhp/Default.asp?contentid=28000410

目前的两大主力娱乐级显卡厂商:nVIDIA的显示卡对两大API的兼容性都极佳,因为对OpenGL的支持过于优秀,nVIDIA甚至早就开始打入了专业显卡领域。ATi在收购了FireGL之后也开始涉足专业显卡。

从Geforce256开始,nVIDIA每推出一款图形芯片,都会针对主流市场和专业市场推出不一样的产品: Geforce256/Geforce2/Geforce2 MX/Geforce2 Pro/Geforce3对应Quadro/Quadro2/Quadro2 MXR/Quadro2 Pro/Quadro DCC。之前nVIDIA的Quadro系列产品都是由德国的ELSA公司独家推出的。包括象ELSA Gloria DCC(NV20 Quadro DCC)、ELSA Gloria4(NV25)等产品。Geforce与Quadro和核心十分相近,一些硬件发烧友成功的将普通的Geforce显卡修改成昂贵的 Quadro专业显卡。
但这并不意味着如今的专业三维图形卡与娱乐级显卡差异不大,它们仍是有很大的区别的。

专业显卡须要的不只仅是贴图和渲染速度,做为专业级的显卡,它必须具有以下几个特色:一、单位时间内处理三角形的能力要高;二、完善支持OpenGL; 三、具有极高的稳定性和兼容性;四、3D处理流程的全硬件化;五、显寸尽量大;六、价格较昂贵。在执行工业级应用程序时,设计人员绝对没法忍受任何不稳定、缺少效率的绘图系统,在图像准确度与品质上也绝不妥协。专业图形加速卡的卖点偏偏不在于多边形产生速度或像素填图率等指标上,而是在调整驱动程序以及提供绘图的精确性方面。这也是为何专业图形卡,特别是高端图形卡价位高得离谱的最主要缘由。高档专业显卡的驱动程序每每都带有对全部OpenGL函数提供完善支持的OpenGL客户端驱动程序(ICD),这些优化程序使用其专业的接口,经过与专业软件的“无缝”结合,对提升机械CAD、建筑、动画、模拟等领域的工程师们的工做效率能够起到很是大的帮助。

目前的专业显卡市场上:3Dlabs WildCat系列、ATi FireGL4紧紧占领了高端图形卡市场;Elsa Gloria系列、ATi FireGL2在中端市场上占半壁江山(包括最新的Quadro四、Radeon 8800、FireGL X1);Elsa的Synergy系列以超低价格抢占了低端市场,与3Dlabs Oxygen VX1/GVX1打得不亦乐乎。

根据以上咱们对各类3D API的了解,咱们在进行电脑硬件系统配置时应该从应用重点出发选择显示卡。若是咱们的电脑在PⅡ 233以上机型,平时又主要用于通常文字处理和游戏,或者也业余搞些3D图形制做等,那么能够选择支持Direct 3D和OpenGL两种3D API的AGP显示卡;若是你的电脑准备用于专业性的3D图形制做,那你必须考虑选择除了支持D3D和OpenGL外还支持MAXtreme、HeiDi 的专业图形卡了。从实际应用状况看,对于大部分电脑业余爱好者只要选择能支持最经常使用的DirectX(Direct 3D)和OpenGL的3D显示卡就能够了。另外,咱们在选择3D显示卡时,要注意对比新产品广告宣传中所列举的支持不一样的3D API时的测试数据,同时注意所能支持的3D API类型和数量,具体到Direct 3D测试数据时还能够注意它究竟能支持多少项(D3D能够支持12种以上3D图形处理效果)D3D的功能。

当你看到一个陌生的3D游戏画面时,你能马上看出它是基于D3D仍是OpenGL的吗?或许John Carmack能够,但我想咱们大多数人都不能。咱们须要知道的是个人应用程序须要哪一种3D API才能运行得更有效率,哪一种3D API可让个人游戏跑得更快更靓。
html

 

[OpenGL,如何测试?]

随着3D显卡市场的迅速崛起,各种3D测试软件也相应而生。因为3D API的限制,它们一样也是阵营分明,各自针对D3D和OpenGL进行测试。这些测试程序都充分的发挥了显卡的硬件特性,画面效果极其绚丽,使人印象深入,让你对最新的3D技术的认识是具体的、理性的,而不仅只停留在枯燥乏味的规格说明书上。除了测试显卡的3D性能,它们的测试结果也每每是衡量整个系统性能的依据。

先让咱们来看看OpenGL性能测试软件。

GL Excess

GL Excess是一款著名的OpenGL性能测试工具,被誉为测试OpenGL性能的3DMark 2001 SE,它的做者是一位来自意大利的小伙子Paolo Martella,它一样有着华丽的界面、丰富的特效表现和动态光影变化,Demo模式下也有动人的音乐和极具震撼力的音效,可是因为没有足够的3D模型(只有一个),该软件还略显单薄,没法像3Dmark那样进行复杂的大型场景测试。
git

 



GL Excess/XSMark 1.2主界面

您能够到驱动之家
http://www.mydrivers.com/tools/dir9/d3832.htm下载GL EXCESS/XSMark 1.2 彻底版For Win9x/ME/NT4/2000/XP。进入GL Excess,能够看到全部的测试选项集中在左侧的Test Settings一栏中,Project输入测试的名称,CPU/FPU tests测试CPU的整数/浮点运算能力,VRAM tests是显存带宽、特性测试部分,FILL RATE tests为填充率测试,POLYGON COUNT tests测试多边形的生成速度。选择上述测试场景,再设置好分辨率(Screen)后就能够Run Benchmark进行测试了。测试过程当中,您能够在屏幕左下角看到实时显示的帧数。测试完毕后,GL Excess会自动生成HTML格式的测试结果报告,其中包括各个场景的最高、最低帧速和平均帧速,而后按照各个场景的速度计算显卡在各场景的OpenGL性能,最后再根据这几项成绩统计出总的测试分数,并与其它同分辨率、同色深下显卡的成绩进行比较。程序员

 



GL Excess/XSMark 1.2测试画面

虽然GL Excess与专业测试程序还有明显的差距,但咱们仍是能够从中了解到显卡的一些主要OpenGL性能,初步体验OpenGL特效。

Vulpine GLMark

若是说GL Excess还略显稚嫩,那么这款来自德国的GLMark就专业的多了。Vulpine GmbH是一家为3DS Max、Maya等专业软件开发插件的公司,他们使用本身开发的Vulpine Vision"引擎编写了这款OpenGL测试软件。软件除支持Intel ISSE等技术外,该公司网站上甚至已经有了NV30的补丁。您能够到驱动之家:
http://www.mydrivers.com/tools/dir9/d3845.htm下载GLMARK 1.1p版For Win9x/ME/NT4/2000/XP。算法

 



GLMark主界面

这款测试软件的画面十分漂亮,通常的测试分为两个场景。第一个场景是由绿色的草地和蓝色的天空组成的广阔平原,第二个场景则是由一个虚拟的女主角,进行了一个科幻世界的探险,固然这个场景少不了整个画面的旋转等使人眼晕的测试。

与GL Excess单薄的场景相比,GLMark的巨大测试场景才真正是对你的显卡OpenGL性能的严峻考验,它全面衡量显卡的填充率和三角形生成力,在“High Detail”设置下,第一个“island”测试场景最多要求达到超过15000个多边形/每帧!
数据库

 


 

 



Vulpine GLMark的两个测试场景

除了彻底兼容标准OpenGL 1.2指令集外,软件还加入了OpenGL光照(OpenGL Lighting)、顶点阵列(Vertex Array Range)、材质压缩(Texture Compression)等技术的应用,固然,只有在你的显卡支持的状况下,它们才能被打开。

软件要求的最低系统配置为:Intel兼容CPU、128M内存、硬件支持OpenGL 1.2的显示卡。
编程

 


 

 



Vulpine GLMark的测试结果

测试完成后,自动生成结果,取平均帧数为最终结果。在fps/time页面中,有详细的帧数变化曲线,仔细分析一下,你不难从中找到最考验显卡OpenGL性能的画面。测试结果还能够保存到数据库(database)一栏中并和其它平台进行比较,只惋惜不能提交结果到网上进行对比。

GLMark自称是普遍的测试平台,能够测试包括从商业应用到3D游戏的各项成绩,可是用于评价专业OpenGL性能它和GL Excess同样都还不够资格。咱们须要更专业的测试程序。

SPEC, 标准性能评估团体(the Standard Performance Evaluation Corporation),是一家注册于美国加州的非盈利性公司,这个组织中立于任何厂商,尽力确保测试软件的公正。而且,据他们所提供的资料代表,他们提供的测试软件因其标准化架构,能够准确评析当前最新,最流行的计算机设备。其官方主页
http://www.spec.org上,提供包括独立的SPECviewperf 7.0专业OpenGL性能测试软件和模拟实际工做环境的SPECapc for Pro/ENGINEER" 200一、3ds max" 4.二、SolidWorks 200一、Solid Edge V十一、Unigraphics V17等各类专业绘图软件的测试包免费下载,而且包括Microsoft Windows和UNIX/Linux等版本。浏览器

 



因为SPEC测试涉及的各种软件过于专业,通常的读者难以接受,这里咱们简单介绍一下SPECviewperf,有兴趣深刻以研究的读者能够与本栏目编辑联系。

SPECviewperf是一个由C语言编写的openGL(开放源代码)的可执行程序,它是由IBM开发的,后来SGI、Digital以及其余的SPECopc项目开发人员对此做了升级和显著的贡献。SPECviewperf在benckmaking openGL执行方面提供了巨大的灵活性。SPECviewperf是一个采用命令行模式的基于C语言应用程序,最新发布的SPECviewperf 7具备6个子测试项目:DRV-0八、DX-0七、Light-0五、proe-0一、ugs-01和3dsmax-01。其中:DRV-08项目对应Intergraph的设计浏览软件DesignReview,测试对象是一个英国石油公司石油平台的场景,带有数量很是繁多的管道、设备以及结构模型。模型的数据容量为50多兆字节,多边形数量是36万个;DX-07项目对应IBM的数据可视化软件Data Explorer。与前一版本的DX-05相比,模型的规模是原来的3倍。测试的对象是3个螺旋状粒子轨迹,模型规模为30万个顶点(对系统的负荷甚至比DRV-08更大);Light-05项目对应Discreet Logic的高级渲染软件Lightscape Visualization System;proe-01项目对应Pro/Engineer;ugs-01项目对应Unigraphics;3dsmax-01项目对应的是3dsMax。

Quake III Arena
安全

 



Quake3系列从推出至今,已经经历了数个年头,但每一代的图形卡都会选择它做为基准的测试,从TNT2时代到今天的GeForce4都不例外。ID SoftWare的设计功力确实不得不让人佩服,相信在Doom3出来以前Quake3还将保持它OpenGL最权威测试软件的地位。目前的显卡包括比较低端的GeForce2 MX400,都可以很好地在主流分辨率下运行Quake3,因此咱们除了重视Quake3测试新显卡的速度以后,还会使用它来测试新显卡的FSAA以及各项异性过滤及MIPMAP过滤是否平滑等画面效果,由于Quake3拥有多达数百条的灵活指令应用,能够方便测试项目的进行。Quake III Arena(雷神之锤 III:竞技场)曾经是游戏玩友机器配置的噩梦,但今天它早已再也不高不可攀了,不过你若是还不知道怎么用它来测试系统OpenGL性能,不妨和我一块儿来动动手吧。

之前你们还同时采用demo001与demo002这两个场景的测试数据,但时至今日,只保留了demo001这一个场景的测试,Quake3的场景复杂系数为2.5。

以测试场景Demo001为例。在进入游戏以后,选择Setup设置显卡,必须根据你想要的测试环境在system选项设置好分辨率、色深、材质、光照等参数,完成设定以后,返回主菜单界面。按下键盘上的“~”键出现指令控制台,输入“timedemo 1”回车,再输入“demo demo001”运行测试场景,运行完毕以后将会返回主菜单界面,再按一次“~”键便可知道最终的FPS。

最新的顶级娱乐显示卡镭9700已经让Quake III Arena突破了300帧大关,性能惊人。

[D3D,如何测试?]

跑完了OpenGL,再来看看Direct3D性能测试软件,这里3DMark 2001 SE无疑是其中的权威。

3DMark 2001 SE
服务器

 



洋葱头Madonion公司的3D Mark系列测试软件凭籍着亮丽的画面和动感的音乐两大法宝,已经成为了Direct3D性能标准测试软件,且深受你们的喜好(固然一些硬件发烧友对这款测试软件还有争议)。简便的操做,直观的结果,与3D Winbench相比,3D Mark确实更能打动咱们这些普通玩家。3DMark 2001 SE Build 330版For Win9x/ME/2000/XP(2002年6月17日发布)是3D Mark系列的最新成员,新版本里更加入了对DirectX 9.0、AGP 3.0 (AGP 8x)、新型号的硬件产品(主要在图形芯片方面)的支持,修正了上个版本的一些BUG。您能够到驱动之家http://www.mydrivers.com/tools/dir7/d3175.htm下载。普通版本的3DMark 2001 SE已经具备完整的功能,不过专业(Pro)的用户能够支付39.99美圆购买提供更多附加功能的专业版。专业版的功能包括了弹性测试自动化选项、批次执行功能、命令列模式、以及彻底兼容Windows环境的专业测试结果浏览器(result browser)。

在安装3DMark2001 SE以前,必须正确安装好硬件的驱动程序,并安装DirectX 8.1或以上版本。为了得到较为准确的数据,建议使用全新安装的Windows 95/98/Me/2000/XP操做系统。并且要关闭屏幕保护等常驻内存的程序,使系统资源每次都最大化并避免执行多任务。这样就能够得到一个相对理想的测试环境,使得测试结果不会受到影响。

测前准备能够在主界面中看到几个选项(如图1 )。其中包括:Project(设置这次测试的标题);Selected Tests(自行选择欲测试的项目);Options(自定义与测试相关的设置,如是否关闭音效等);Display and CPU setting(自定义显示分辨率、色彩深度等)---这里是设置重点,除分辨率、色深外还要注意抗锯齿是否打开、渲染选项和渲染引擎能够设为默认值;最后Benchmark(运行基准测试)。
网络

 


 

 



设置窗口

 


 

 



Game Test 1 - Car Chase和Game Test 2 - Dragothic(游戏性能部分)

 


 

 



Game Test 3 – Lobby和Game test 4 - Nature(游戏性能部分)

 


 

 



Fill Rate和High Polygon Count(理论速度部分)

 


 

 



Environment Mapped Bump Mapping和Dot Product 3 Bump Mapping (DOT3)(理论速度部分)

 


 

 



Vertex Shader和Pixel Shader(DirectX 8特效部分)

 


 

 



Advanced Pixel Shader和Point Sprites(DirectX 8特效部分)

测试分为两大部分,第一部分为摸拟场景测试,提供了4项的摸拟场景测试,前3项场景均有低细节度与高细节之分,在高细节度上采用了多层的纹理与动态的光影效果。最后一项测试采用了Pixel Shader渲染指令,非支持DirectX 8的显卡是没法运行的,好比GeForce4 MX系列就没法运行,注意前4项的摸拟场景测试能够最终进行纹理画质对比,但存在被测显卡优化的现象。第二部分的测试项目主要测试显卡的实际性能指标,偏重了纯指标测试,因此显卡的优化对这一部分不起太大的做用,除非有重大的改变。它包括了Vertex/Pixel Shader及EMBM/DOT3三点内积式等测试项目,一般即便显卡采用不一样驱动在这部分的测试项目中的得分浮动也不大。与3DMark2001相比3DMark2001 SE增长了Advanced Pixel Shader的测试,支持Pixel Shader1.4版本,而前者只支持Pixel Shader1.1版本,但为了能兼顾到不一样构架的显卡MadOnion公司特地在Advanced Pixel Shader中设计了fall-back的标准下降功能,也就是说即便是只支持Pixel Shader1.1的GeForce3体系也能完成这项测试,可是它却须要渲染两个周期,而ATI Radeon 8500或更高等级支持Pixel Shader1.4的显卡只须要一个周期就能完成渲染工做。

采用了来自于游戏《Max Payne》,由Remedy Entertainment所设计,称为MAX-FX Technology的真实游戏引擎,3DMark2001 SE完全展现了DirectX 8.1的威力,顶点渲染(Vertex Shader)和相素渲染(Pixel Shader)的威力结合在一块儿,带来的是酷炫的画面和强烈的视觉冲击,能够说迄今为止,尚未那款测试软件的画面效果能出其左右,包括基于OpenGL API的GL Excess和Vulpine GLMark,其实这在某种程度上也说明了DirectX 8.1至少在画面效果上已经领先于OpenGL 1.2。

3DMark2001 SE支持DirectX 8.1,支持最新的3D图形技术,能够有效地测试PC运行3D图形程序的性能,并为用户提供一个在线比较工具,方便用户评估系统性能并决定是否升级。3DMark2001 SE提供了详细的测试结果,能够经过4M个系统结果的性能数据库比较系统相对性能。这能够容许用户比较本身系统和全球其余用户系统的性能。

推出一年多了,即便版本有不断升级,3DMark2001 SE仍是显得有些老了,甚至有被nVIDIA和ATi吃透的趋势,咱们已经开始期待3DMark2002(2003?)的出现,它会是基于DirectX 9的吗?有没有比2001更酷的测试画面?咱们拭目以待。

虽然无可避免的会有图形卡厂商为它的场景进行优化或者测试项目有Cheating的现象。然而这些缺点仍没法阻止3DMark成为D3D的必备测试软件。因此3DMark2001 SE仍然是咱们D3D测试软件中的首选。

Unreal Tournament 2003 demo

 



游戏大亨Epic刚刚发布 Unreal Tournament 2003(虚幻锦标赛2003)的演示。做为游戏界的领导厂商,Epic推出的新一代游戏Unreal Tournament 2003和id soft 的Doom 3同样表明着游戏甚至是游戏硬件将来发展的方向,所以运用它来对目前主流的显卡进行评测是具备前瞻意义,同时也可让消费者了解什么样的显卡最能保护投资。Unreal Tournament 2003和Unreal Tournament同样是专为网络对战设计的。Unreal Tournament在欧美拥有很是大的玩家群体,是公认的与Quake3并列的世界顶级FPS游戏之一,同时也是各大国际赛事常常采用的正式比赛项目。《虚幻竞技场2003》使用同虚幻II同样的引擎技术。它包含了大大改进的画面、新地图和许多新的角色造型。虚幻锦标赛2003(UT2k3 Demo)在PIII 550, 256M Ram, GF2 MX200上,使用640x480分辨率全部效果全低,能够达到平均30左右的FPS,基本算是流畅。在《虚幻2》引擎和强大硬件配置的支持下,UT2003能精细地表现出齐腰身的草丛摇曳摆动、斑驳的光影交错荡漾的图形效果,而最为制做者所津津乐道的是他们的布娃娃技术(rag doll)。该技术可拟真出角色的物理运动,举个简单的例子,当敌人被你击中而倒下时,会随着被击中的部位、角色的移动速度、所处的地形,而发生特定的倒下动做,能够这么说,没有一个角色的倒下动做是相同的!在前做中当敌人被击倒在楼梯上时,他们一般就平躺在那儿,但在UT2003中,你将看到他们的尸体从楼梯上缓缓滑下的过程。您能够到UT2003官方网站www.unrealtournament2003.com去下载该游戏的最新版本demo。

游戏虽然好玩,可是别忘了咱们是来测试的。运行游戏system文件夹中的Benchmark.exe文件,会自动跳出一个对话框,选择你想要的测试分辨率后,游戏会以批处理的方式运行三个flyby飞行场景和四个botmatch机器人混战场景,最后自动得出flyby和botmatch两个最终得分。若是要修改色深、材质等参数,那就必须按下ESC键到Settings中进行设置。

 



UT2003设置窗口

UT2003引入了DirectX 8的顶点渲染技术(Vertex Shader)。在Unreal Tournament 2003 demo的ut2003.ini文件中咱们能够看到“UseHardwareVS=True”的字样,即设定能够利用硬件Vertex Shader。

本身动手作一下3D测试吧,你必定会有所收获的。

最后须要再次提醒的是,若是你想要一个真实的测试成绩,必须将各种没必要要的常驻内存程序杀掉,同时必须保证在进行全部的测试前,都必须从新启动系统,以一个“干净”的环境来进行测试,运行测试程序前不能运行任何其它的程序,以避免占用内存资源,还有每次测试前最好运行磁盘整理程序

 

[D3D、OpenGL?这就教你调!]

这么多测试跑下来,必定很累了吧?不过相信你对D3D和OpenGL的也必定有了比较深的认识。说实话,除CS等少数几个游戏以外,我对大多数FPS游戏都很感冒---头晕,可恰恰权威测试游戏多数都是FPS的,若是你也有和我同样的症状,不妨在测试时把头扭开:o)好了,有了前面的产品篇和评测篇,你应该已经选好了适合本身的3D显示卡,也知道了如何去测试显卡的3D性能,不过除了这两个环节,还有一处极其关键的D3D和OpenGL设置所在,那就是---驱动程序。要想在游戏画质和速度之间取得最佳的平衡点,咱们必须对驱动程序进行优化。打开控制面板中的显示设置,D3D和OpenGL的设置界面就出如今咱们的眼前。

先来看看ATi显卡驱动的D3D和OpenGL设置:

 



驱动程序曾是ATi的垢病,但Ati的工程师们洗心革面,拿出了全新催化剂驱动。经过驱动之家ATi镭卡驱动系列测试代表,最新的催化剂驱动有效提高了全系列镭卡的性能并且解决了很多长期存在的Bug。

 


 

 



ATi显卡驱动的D3D和OpenGL的设置界面

说到自定义设置,咱们不得不谈谈ATI的各向异性过滤与SMOOTHVISION两个功能。

各向异性过滤技术在大多数的场合提升了场景的图像质量,但并非全部的场合都适合它。当使用双线过滤以后会使得相邻材质像素的边缘不那么锐利,三线过滤会使得图像更柔和,因此通常的只有比较近的对象才会显得比较锐利。固然这样也会让有的场景显得不是那么逼真,简单的形容就是画面有点发虚,好比在须要很是锐利的墙角会变得比较圆滑。不一样的GPU处理器实现这个功能的方式是不一样的。ATI和nVidia在各项异性上的处理速度有些不一样,可是处理的质量很是的类似。NVidia GeForce系列的各向异性处理的质量处理虽然至关的不错,可是对于性能的影响很是的明显,几乎使得性能有了大约50%的降低。ATI Radeon系列显卡在提供了相同的质量下,对于性能的影响则小了许多。咱们最多甚至能够使用到16X的各项异性过滤。

SMOOTHVISION视觉平滑技术,至关于nVIDIA的全屏幕抗锯齿(FSAA)技术,它也被称做混叠消除,在Radeon 9700之前,ATi的SMOOTHVISION反锯齿是一种超级采样算法,没有采用nVIDIA的多重采样技术。ATi Radeon 8500采用的是所谓超级采样技术(RGSS)。经过渲染出场景的多重拷贝,与它们进行位移叠加而获得最终的反锯齿效果,这种方法在提供优秀的纹理分辨率的同时也除去了锯齿,固然它须要极大的填充率,所以须要对一幅待反锯齿的场景进行屡次渲染。而多重采样反锯齿,是经过检视每一个像素的Z轴深度数值,而后根据像素被遮盖的程度,计算出这个像素前景和后景的平均数值,这个数值就是像素的最终颜色。这种反锯齿的方法好处在于对只须要渲染待反锯齿的场景一次就能够达到效果,从而下降了对GPU计算资源和显存带宽的消耗,可是在实际使用中,这种技术的效果并不是这么优秀。因此如今R9700芯片对超级采样反锯齿和多重采样反锯齿都加以了支持。ATi将他们在R9700芯片上应用的多重采样反锯齿技术命名为“SMOOTHVISION 2.0”,SMOOTHVISION 2.0支持2X、4X和6XAA反锯齿模式。

这两个技术的应用,将使ATi镭卡的画面品质更加优秀,固然咱们在游戏中也不要忘了打开这个功能。而纹理质量和Mipmap质量也是对画面影响很是大的一个方面。

纹理质量和Mipmap质量决定了人物、背景的贴图是否看起来是否真实。最后,咱们不要忘了等待垂直同步信号这个选项,这个选项能够决定让你的游戏桢速率是否等同于你的屏幕刷新率。

 



打开全屏幕抗锯齿和各向异性过滤功能(左图)与未打开(右图)时的对比效果

不管是在硬件设计、仍是在驱动编写上,Nvidia无疑都是最棒的,仅凭一款全新的雷管驱动程序,nVIDIA就可让N卡的D3D和OpenGL性能有大幅度的提升。

 



nVIDIA最新的雷管五驱动虽然仍是一款Beta版,但仍是能带来使人难以置信的性能提高,特别是对Geforce3以上级别的显卡,做用更为明显。它支持DirectX8.1,包括:nView 2.0、NVRotate画面旋转功能、NVKeystone实时图象校订、数字振动面板、全新的控制面板。Robust Channels :在驱动中经过一个安全路径,能够为全部应用提供更快的性能和更佳的稳定性;CineFX Simulator:可让开发人员使用Cg编写复杂的Shader等技术亮点!这又是nVIDIA为咱们送上来的一顿驱动大餐!须要你们注意的是,安装这款驱动须要在控制面板中的添加/删除程序里面彻底卸载旧版本的驱动程序,不然将会出现desk.cpl错误。

 



40.41版驱动http://hardware.mydrivers.com/page/ctdir1/2002,08,31,42,0.htm有详细的评测

与ATi催化剂不一样,雷管驱动中的抗锯齿设置对D3D和OpenGL同时有效。从GeForce 3开始,nVIDIA在GeForce中使用了全新的硬件HRAA-高清晰度反锯齿技术来实现FSAA全屏反锯齿效果。nVIDIA宣称HRAA-高清晰度反锯齿技术以较小的效能牺牲来达到和FSAA(全屏反锯齿效果)同样的反锯齿效果。HRAA-高清晰度反锯齿的实际运做方式是经过芯片内部核心集成的“重建过滤”模块,根据输出像素周围的4个像素资料进行计算,并和待输出像素比较来最终肯定这个像素的输出位置和相关参数。nVIDIA把这种采样对比的过程称做“Quincunx”五点梅花取样,它能够利用2×FSAA运算量和显存带宽占用率得到GeForce 2时4×FSAA所达到的效果。并且五点梅花采样所消耗传统的2×FSAA大体相同。

 



在Quake3上进行的测试代表,在一样分辨率和一样色彩深度下,打开FSAA后,显示帧数会直落20%~70%。所以要得到FSAA效果,要么牺牲速度,要么牺牲分辨率。不过最终如何取舍,仍是要依据你的机器配置和游戏中的主观感觉。比方说,在《魔兽争霸III》中,打开FSAA就没有必要,而在《极品飞车Need For Speed Hot Pursuit 2》中,要在不丢帧的状况下尽量的打高FSAA,体会流光溢彩的画面效果(我的建议)。

 



D3D选项中取默认值就能够了

 



OpenGL选项中别忘了关闭垂直同步(Vertical sync)

根据你的爱好、你的系统配置,找出D3D和OpenGL画质和速度间的黄金分割点吧,若是你连本身动手的DIY精神都欠缺,不妨到驱动之家看看驱动评测,编辑们会向你推荐最佳的D3D和OpenGL设置。

摸清了D3D和OpenGL的脉络了吗?根据你的须要,选择一款好的3D显卡、选择一款好的驱动程序、运行测试软件、调整、找出最适合你的D3D和OpenGL工做状态。这就是“理清D3D和OpenGL的脉络”真正的意义之所在。


[写在最后,常见问题解答]

常见问题解答(FAQ)

Q:什么是API?什么是3D API?
A:API是英语“应用程序接口(Application Programming Interface)”的缩写,3D API就是3维图形应用程序接口了。

Q:什么是Direct3D?
A:Direct3D是一个3D API,它是微软公司多媒体应用软件DirectX 开发库中的一部分,主要用于游戏和多媒体领域。

Q:什么是OpenGL?
A:OpenGL也是一个3D API,英文全称是“Open Graphics Library”即“开放的图形程序接口”,它是跨平台的计算机工业标准应用程序接口,主要应用于专业设计领域。

Q:个人显卡支持Direct3D或是OpenGL吗?
A:目前新上市的显示卡大都提供了对D3D和OpenGL的完善的支持,若是你仍是不太清楚,能够运行3D测试软件如3DMark、GLMark测试显卡对Direct3D和OpenGL的支持状况。

Q:那一款驱动程序最能发挥个人3D显卡的Direct3D和OpenGL性能?
A:并非最新的驱动程序就必定能带来最佳的Direct3D和OpenGL性能,测试结果能够告诉你哪一款驱动最适合你得显卡,不妨关注一下驱动之家的驱动评测,相信您能找到满意的答案。

Q:为何个人电脑没法运行SPECviewperf?
A:注意检查一下你的系统配置,运行SPECviewperf要求至少256M内存。

Q:为何个人电脑运行3DMark2001 SE每次得分都不同?
A:较小的得分差别是正常的,若是差别较大,极可能是你在测试过程当中运行了其它应用程序,破坏了“干净”的系统环境。

Q:我到底须要Direct3D仍是OpenGL?
A:如今的显示卡3D性能愈来愈强大了,价格也能够接受,因此个人建议是:无论你是商业用户、游戏发烧友仍是3D设计师,“Direct3D和OpenGL我都要!”

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!但愿你也加入到咱们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

相关文章
相关标签/搜索