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