當咱們遇到其餘遊戲程序員並談論咱們使用OpenGL開發Overgrowth時老是會遇到懷疑的眼神。爲何要用OpenGL? DirectX纔是將來。當咱們使用OpenGL去告訴顯卡如何工做時,房間的溫度降低了10度(啥意思?我一直覺得A卡和N卡的區別,沒想到做者認爲是API的問題?Holy。。。)。html
在1982年,Silicon公司開發售賣使用稱爲Iris GL的API的高性能圖形顯示終端。隨後的幾年,Iris GL變得臃腫和難以維護,直到silicon決定完全走向新的一步:徹底的重構Iris GL並開源。他們的競爭者可使用這種新的開放圖形庫(OpenGL)可是做爲回報,他們必須幫助維護更新該庫。 linux
現在,OpenGL 由Khronos Group管理。一個由不少公司參與組成的非營利組織,重點是維護高質量多媒體API。在底層,由 OpenGL Architecture Review Board (ARB)來管理。各類遊戲平臺都支持OpenGL,包括:Mac,Windows,Linux,PS3,Wii,IPhone,PSP和DS,除了XBox,下面咱們就要介紹它:程序員
自從MS-DOS時代,微軟就明白遊戲是一個用戶選擇操做系統的重要依據。基於這個緣由,在1995年,微軟建立了一套專用庫以鼓勵你們開發winodw95平臺獨佔的遊戲。這些庫包括Direct3D,DirectInput和DirectSound,整個集合就是你們知曉的DirectX。當微軟2001年進軍遊戲市場時,XBOX意圖統治次世代遊戲市場。web
看看如今的情況,微軟的戰略無疑是成功的。大多數的PC遊戲都是用DirectX,大多都運行在windows或者Xbox360上。但有些例外,它們沒法再競爭對手的平臺上,好比Playstation, Mac OS和Wii。因而,它給咱們帶來一個新的問題:算法
使用DirectX是由於API的選擇是基於遊戲開發的積極反饋,這一切都發生在2005年:canvas
若是一個API越流行,那就有越多人用,而後它就會更流行,如此循環。。。這種網絡效應帶來的結果就是:更流行的API得到更好的硬件廠商支持,圖形程序員隨後更意於選擇他們已經熟知的API。windows
DirectX的勝出得益於微軟的兩次十分尖銳的戰役,圍繞XBox360和windows vista,也包括着關於OpenGL這種開源項目都面臨着的FUD(恐懼,不肯定,懷疑),以及DirectX誇大宣傳的優點。今後,這種網絡效應將會一步步加強直到OpenGL從地球消失。(做者好悲觀。。。)api
Win平臺上,DirectX的圖形驅動顯然比OpenGL的驅動獲得更好的維護。這是因爲廠商支持引發的惡性循環。遊戲開發者選擇是用OpenGL仍是DirectX由不少因素決定,顯卡廠商獲得的OpenGL驅動BUG比較少,由於用DirectX的比較多,因此不能很好的支持OpenGL的驅動。網絡
簡單來說,越多程序員懂得DirectX甚於OpenGL,那麼更多遊戲使用前者開發。這會引發又一個惡性循環,更多地項目使用DX開發,更多地程序員須要學習如何使用它。。。。工具
微軟在vista發佈時對OpenGL使用了FUD戰術。在2003年,微軟推出了前面介紹維護底層的OARB組織--預示着微軟再也不會對OPGL的將來感興趣。在2005年,微軟在SIGGRAPH和WinHEC上給你們的假象就是他們從vista開始將不會支持OPGL除了對XP程序的向後兼容。這種版本的OPGL將會創建在DirectX之上,這固然引發嚴重的性能問題。這場戰役致使不少優秀程序員轉戰DX。
當vista發佈後,他又容許廠商建立快速可安裝客戶端驅動(ICDs)以保留對原生OpenGL的支持。OpenGL發佈消息稱OpenGL依舊是第一陣營,可是OPGL在vista上的效果始終不如Direct3D。不幸的是,這種破壞已經給OPGL帶來了巨大的打擊。
win7發售時的市場策略與vista一模一樣,微軟展現了before和after效果。不少玩家認爲從dx9轉到dx10就能神奇般的把圖形變得更亮,或者說從Halo1變成Crysis。遊戲評論證明Crysis的DX9版與DX10無區別,而畫面的改變事實上因爲調整了某些config文件。
在擁有大量遊戲的微軟市場策略下,一些有看法的程序員與卡馬克大神拒絕追趕他。他說:「我的來說,我不會當即跳進DX10.我會嘗試作些改變直到我真的須要它。」
(我以爲做者是個悲劇,傳言說下一代的ID引擎是基於DX的,卡馬克也沒說不用dx呀。。。)
獲得更少的廠商支持,遊戲再也不大量使用,被微軟緊追猛打,市場生存空間狹小,爲何咱們還要用它?你們用dx不更省事麼?不,由於實際上,OpenGL比DX更強大,支持更多的平臺,這是將來遊戲的基礎。
OPGL有比DX更快的draw調用(若是你不信請看這裏this one),而且它能經過廠商擴展第一時間使用GPU的新特性。OPGL讓你能在多平臺上直接訪問顯卡硬件,而DirectX只能在他們最新的操做系統上提供一些最新技術的展現。DX11鼓吹的Tesselation其實三年前就能夠用OPGL使用了。我不知道之後還會有什麼新技術,但我知道OPGL必定最早可用(這個「賣點」也灰常吸引譯者本人)。
暴雪老是同時發佈遊戲的mac版本,這是他們成功的一項法寶。
就像卡馬克被問Rage是否是DX遊戲時談到:「它事實上用的是OpenGL,儘管咱們使用了D3D-ish API在Xbox360平臺和PS3的CG。你使用的技術很微小一部分,寫的上百萬行代碼只有少數部分纔會用API,可是數百萬行的代碼卻依賴那些不可知的目標平臺。」就像卡馬克說的,爲何不會跨平臺作好準備而讓本身被DX限制?
非盈利的開源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。語言呢也終究是工具,因此咱們的算法才如此的「泛型」。)