爲什麼你應該使用OpenGL而不是DirectX?

爲什麼你應該使用OpenGL而不是DirectX?
這是一篇很意思的博文,原文鏈接爲: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 是什麼?

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。語言呢也終究是工具,所以我們的算法才如此的“泛型”。)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章