自1996年開始,3D API之戰(zhàn)延續(xù)至今,并隨著GPU程序的廣泛應(yīng)用而炮火漸希,淡出爭論的焦點(diǎn)。如果非要論個輸贏的話,應(yīng)該是OpenGL絆倒了自己,以致大業(yè)未成。而OpenGL ES異軍突起,反而要了OpenGL的老命。
戰(zhàn)局的高潮起于2001年,為對抗飛速發(fā)展的D3D,迫于OpenGL社群的壓力,OpenGL
ARB開始加快工作進(jìn)程,于8月推出OpenGL 1.3規(guī)范,次年OpenGL ARB成立OpenGL
2.0工作組,號稱要實(shí)現(xiàn)超越D3D的下一代技術(shù)。中間發(fā)布了1.4和1.5兩個過渡版本,幾經(jīng)波折,一直到2004年,OpenGL
2.0規(guī)范才正式發(fā)布。而這時,已經(jīng)時過境遷,大量新興功能出現(xiàn),在D3D吸取OpenGL的優(yōu)點(diǎn)的同時,OpenGL的擴(kuò)展也引入了一些D3D的功能模
式,開發(fā)人員更多的是在和日新月異的擴(kuò)展打交道,核心模塊已經(jīng)不是大家關(guān)注的焦點(diǎn)了。
OpenGL 2.0的最重要部分是一個新的架構(gòu),一方面精簡掉原來冗余和過時的東西,一方面要充分和Shader結(jié)合。而最終的結(jié)果是在這兩方面都不成功。
在精簡方面,首先,提供對原有功能的兼容性支持雖然是好事,但大大沖淡了采用新架構(gòu)的必要性,結(jié)果是實(shí)際應(yīng)用的是包含了所有版本的功能集
合,成了一個更大的包袱。雖然ARB又提出要制定Pure OpenGL 2.0,但為時已晚,Khronos Group的OpenGL
ES已經(jīng)借嵌入式的大發(fā)展成為實(shí)際上的精簡OpenGL。而且OpenGL 2.0的精簡仍然保留了很多高端工作站的功能特性,遠(yuǎn)不如OpenGL
ES有吸引力。
在集成shader方面,ARB內(nèi)部似乎斗爭得很厲害。3D Labs掌握2.0規(guī)范的主導(dǎo)權(quán),出于高端背景,3D
Labs似乎想把它的高端風(fēng)格帶入OpenGL,并想做產(chǎn)業(yè)的領(lǐng)頭羊。nVidia已經(jīng)有了CG,希望CG能成為OpenGL
shader的標(biāo)準(zhǔn)。ATI在和nVidia做激烈的競爭,非常不愿看到CG成為標(biāo)準(zhǔn),為了對抗而開發(fā)了自己的RenderMonkey。最終的妥協(xié)是他
們由3D
Labs帶頭花費(fèi)2年重新創(chuàng)造了GLSL。有人認(rèn)為nVidia雖然失敗了,但它和ARB官僚體系的努力抗?fàn)幰廊痪窨杉巍1M管各廠商紛紛表示支持
GLSL,但對軟件開發(fā)者而言,大家更喜歡成熟穩(wěn)定兼容性好的CG。CG是跨平臺的,而且其語法和D3D的HLSL非常類似,多數(shù)情況下不需修改就能通
用。CG有豐富的工具支持,有豐富的文檔和樣例,有活躍的社區(qū),并且可以和HLSL共享很多資源。GLSL還沒誕生就確定要和成功的CG爭奪用戶。
2004年后,OpenGL的進(jìn)程幾乎再度停滯,致使PBuffer的問題困擾OpenGL用戶3年之久。OpenGL
2.0也是雷聲大雨點(diǎn)小,幾乎沒聽說過什么產(chǎn)品正式用了2.0,本來說會支持OpenGL的PS3也是用OpenGL
ES加CG。2006年3月,OpenGL ARB宣布,將于年底前將OpenGL交給Khronos Group管理。
有人說OpenGL終于可以脫離ARB的官僚管制,在Khronos Group的手下將會象OpenGL ES一樣發(fā)揚(yáng)光大。但是OpenGL的殘局已經(jīng)很難收拾,而且長于嵌入式領(lǐng)域的Khronos Group也未必對中高端圖形API操作自如。
微軟這一邊也并非一番風(fēng)順,自2000年11月就發(fā)布了DirectX
8,D3D的實(shí)用性已經(jīng)大大增強(qiáng),但升級移植的過程讓開發(fā)者們倍感痛苦。而今,隨著DirectX
10的臨近,開發(fā)者們又要痛一次。dotNet平臺似乎給開發(fā)者們帶來了希望,在有人仍在大肆詬病dotNet平臺時,已有不少廠商發(fā)行了基于MDX
(Managed DirectX)的游戲和應(yīng)用。然而已經(jīng)Beta的MDX
2.0中途夭折,讓不少急性子的開發(fā)者叫苦不迭。而后又傳來WinFX的Media3D和XNA將缺省使用業(yè)界標(biāo)準(zhǔn)的右手系,讓習(xí)慣了D3D左手系的開發(fā)
者苦笑不得。
Direct3D vs OpenGL的尾聲(轉(zhuǎn))
真是凄慘,在某種程度上來說,程序員才是可以隨時被人左右,玩弄于股掌之中。一開始學(xué)圖形開發(fā)的時候跟了DirectX
8,買了一些啟蒙的書自己嚼。后來下了決心開始學(xué)OpenGL,并且一發(fā)不可收拾,一直用到現(xiàn)在早已荒廢了DX知識。打從微軟開始頻繁地更新DX9的時候
就覺得
DX遲早有一天會有翻身的機(jī)會,現(xiàn)在看來這個日子已經(jīng)來到了。感覺上微軟那軟件大哥大的實(shí)力還是顯示出來了,無論是官方的幫助文檔,還是業(yè)內(nèi)的社區(qū)網(wǎng)站,
都比較傾向DX(Gameres,Gamedev)。況且OGL的2.0版本已經(jīng)和 Duke Nukem Forever 一樣,成了Duke Nukem If Ever 的后續(xù)了。不知道是悲哀還是無奈,就個人來說自己早已沒有當(dāng)年的沖勁,在迷惑之余也只能靜靜地站在一旁隔岸觀火,不再想摻一腳了,累。