圖形世界分裂的兩派——理清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

相關文章
相關標籤/搜索