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