为什么你应该使用OpenGL而不是DirectX?
From:?http://www.cnblogs.com/Baesky/archive/2011/04/08/2009128.html
這是一篇很意思的博文,原文鏈接為:http://blog.wolfire.com/2010/01/Why-you-should-use-OpenGL-and-not-DirectX
大家可以思考一下:why?we choose a closed source API when the open source is equally good or better?
當(dāng)我們遇到其他游戲程序員并談?wù)撐覀兪褂肙penGL開發(fā)Overgrowth時總是會遇到懷疑的眼神。為什么要用OpenGL??DirectX才是未來。當(dāng)我們使用OpenGL去告訴顯卡如何工作時,房間的溫度下降了10度(啥意思?我一直以為A卡和N卡的區(qū)別,沒想到作者認(rèn)為是API的問題?Holy。。。)。
OpenGL 是什么?
在1982年,Silicon公司開發(fā)售賣使用稱為Iris GL的API的高性能圖形顯示終端。隨后的幾年,Iris GL變得臃腫和難以維護,直到silicon決定徹底走向新的一步:完全的重構(gòu)Iris GL并開源。他們的競爭者可以使用這種新的開放圖形庫(OpenGL)但是作為回報,他們必須幫助維護更新該庫。???
如今,OpenGL 由Khronos Group管理。一個由很多公司參與組成的非營利組織,重點是維護高質(zhì)量多媒體API。在底層,由?OpenGL Architecture Review Board (ARB)來管理。各種游戲平臺都支持OpenGL,包括:Mac,Windows,Linux,PS3,Wii,IPhone,PSP和DS,除了XBox,下面我們就要介紹它:
DirectX 是什么?
自從MS-DOS時代,微軟就明白游戲是一個用戶選擇操作系統(tǒng)的重要依據(jù)?;谶@個原因,在1995年,微軟創(chuàng)建了一套專用庫以鼓勵大家開發(fā)winodw95平臺獨占的游戲。這些庫包括Direct3D,DirectInput和DirectSound,整個集合就是大家知曉的DirectX。當(dāng)微軟2001年進軍游戲市場時,XBOX意圖統(tǒng)治次世代游戲市場。
看看現(xiàn)在的狀況,微軟的戰(zhàn)略無疑是成功的。大多數(shù)的PC游戲都是用DirectX,大多都運行在windows或者Xbox360上。但有些例外,它們無法再競爭對手的平臺上,比如Playstation, Mac OS和Wii。于是,它給我們帶來一個新的問題:
為什么大家都是用?DirectX?
使用DirectX是因為API的選擇是基于游戲開發(fā)的積極反饋,這一切都發(fā)生在2005年:
如果一個API越流行,那就有越多人用,然后它就會更流行,如此循環(huán)。。。這種網(wǎng)絡(luò)效應(yīng)帶來的結(jié)果就是:更流行的API獲得更好的硬件廠商支持,圖形程序員隨后更意于選擇他們已經(jīng)熟知的API。
DirectX的勝出得益于微軟的兩次十分尖銳的戰(zhàn)役,圍繞XBox360和windows vista,也包括著關(guān)于OpenGL這種開源項目都面臨著的FUD(恐懼,不確定,懷疑),以及DirectX夸大宣傳的優(yōu)勢。從此,這種網(wǎng)絡(luò)效應(yīng)將會一步步增強直到OpenGL從地球消失。(作者好悲觀。。。)
1. 網(wǎng)絡(luò)效應(yīng)與惡性循環(huán)
Win平臺上,DirectX的圖形驅(qū)動顯然比OpenGL的驅(qū)動得到更好的維護。這是由于廠商支持引起的惡性循環(huán)。游戲開發(fā)者選擇是用OpenGL還是DirectX由很多因素決定,顯卡廠商得到的OpenGL驅(qū)動BUG比較少,因為用DirectX的比較多,所以不能很好的支持OpenGL的驅(qū)動。
簡單來講,越多程序員懂得DirectX甚于OpenGL,那么更多游戲使用前者開發(fā)。這會引起又一個惡性循環(huán),更多地項目使用DX開發(fā),更多地程序員需要學(xué)習(xí)如何使用它。。。。
2.?關(guān)于 OpenGL的FUD效應(yīng)?和 Vista
微軟在vista發(fā)布時對OpenGL使用了FUD戰(zhàn)術(shù)。在2003年,微軟推出了前面介紹維護底層的OARB組織--預(yù)示著微軟不再會對OPGL的未來感興趣。在2005年,微軟在SIGGRAPH和WinHEC上給大家的假象就是他們從vista開始將不會支持OPGL除了對XP程序的向后兼容。這種版本的OPGL將會建立在DirectX之上,這當(dāng)然引起嚴(yán)重的性能問題。這場戰(zhàn)役導(dǎo)致很多優(yōu)秀程序員轉(zhuǎn)戰(zhàn)DX。
當(dāng)vista發(fā)布后,他又允許廠商創(chuàng)建快速可安裝客戶端驅(qū)動(ICDs)以保留對原生OpenGL的支持。OpenGL發(fā)布消息稱OpenGL依舊是第一陣營,但是OPGL在vista上的效果始終不如Direct3D。不幸的是,這種破壞已經(jīng)給OPGL帶來了巨大的打擊。
3. 誤導(dǎo)市場的戰(zhàn)役
win7發(fā)售時的市場策略與vista如出一轍,微軟展示了before和after效果。很多玩家認(rèn)為從dx9轉(zhuǎn)到dx10就能神奇般的把圖形變得更亮,或者說從Halo1變成Crysis。游戲評論證實Crysis的DX9版與DX10無區(qū)別,而畫面的改變事實上由于調(diào)整了某些config文件。
在擁有大量游戲的微軟市場策略下,一些有見解的程序員與卡馬克大神拒絕追趕他。他說:“個人來講,我不會立即跳進DX10.我會嘗試做些改變直到我真的需要它?!?/p>
(我覺得作者是個悲劇,傳言說下一代的ID引擎是基于DX的,卡馬克也沒說不用dx呀。。。)
為什么我們要用?OpenGL?
得到更少的廠商支持,游戲不再大量使用,被微軟緊追猛打,市場生存空間狹小,為什么我們還要用它?大家用dx不更省事么?不,因為實際上,OpenGL比DX更強大,支持更多的平臺,這是未來游戲的基礎(chǔ)。
1. OpenGL 比 DirectX 更強大
OPGL有比DX更快的draw調(diào)用(如果你不信請看這里this one),并且它能通過廠商擴展第一時間使用GPU的新特性。OPGL讓你能在多平臺上直接訪問顯卡硬件,而DirectX只能在他們最新的操作系統(tǒng)上提供一些最新技術(shù)的展示。DX11鼓吹的Tesselation其實三年前就可以用OPGL使用了。我不知道以后還會有什么新技術(shù),但我知道OPGL一定最先可用(這個“賣點”也灰常吸引譯者本人)。
2. OpenGL 是跨平臺的
暴雪總是同時發(fā)布游戲的mac版本,這是他們成功的一項法寶。
就像卡馬克被問Rage是不是DX游戲時談到:“它事實上用的是OpenGL,盡管我們使用了D3D-ish API在Xbox360平臺和PS3的CG。你使用的技術(shù)很微小一部分,寫的上百萬行代碼只有少數(shù)部分才會用API,但是數(shù)百萬行的代碼卻依賴那些不可知的目標(biāo)平臺?!本拖窨R克說的,為什么不會跨平臺做好準(zhǔn)備而讓自己被DX限制?
3. OpenGL 是未來游戲更好的選擇
非盈利的開源OpenGL用于創(chuàng)造一個允許用戶在各種平臺都能高效能發(fā)揮的圖形庫。他被壟斷企業(yè)不斷攻擊,這其實也在傷害您自己的利益。我們需要自由和競爭來提升質(zhì)量和降低價格。一個微軟壟斷的局面對游戲開發(fā)者和玩家來說都是非常杯具的。
OpenGL 能否力挽狂瀾?
回到1997年,那時的情況和現(xiàn)在如此相似。微軟為DX發(fā)動了瘋狂的市場戰(zhàn)役,隨后大家都“知道”它比OpenGL更快。隨著Chirs Hecker發(fā)表的open letter denouncing DirectX。情況有所改變。隨后,卡馬克發(fā)布了著名的OpenGL rant,并掏出大把錢用OpenGL開發(fā)Id工作室的項目,一度證明了DX不可能達到的3D性能。
這一課已經(jīng)被漸漸遺忘。很多開發(fā)者陷入了dx的市場誘惑。
如果你使用OpenGL,你可以比DX11更早使用更快更強大的顯卡特性,并且用于所有版本的windows,mac和linux,同樣也可用于PS3,Wii,PSP,DS和iPhone。你也可以在?rapidly-developing WebGL standard使用這些特性(用于次世代網(wǎng)頁游戲)。
如果你是一個游戲開發(fā)者,你只需搜索資料并思考,然后想想OpenGL是否是更好的選擇。
(譯后感:本人玩的是C++,這篇文章讓我覺得似曾相識,語言之爭也從未結(jié)束,也將不會結(jié)束。API是API,就像卡馬克說的,一個游戲很少一部分才用到API。語言呢也終究是工具,所以我們的算法才如此的“泛型”。)
總結(jié)
以上是生活随笔為你收集整理的为什么你应该使用OpenGL而不是DirectX?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 新0-Day漏洞或将给Linux桌面发行
- 下一篇: 汽车驾照分类