《OpenGL 3 & DirectX 11: The War Is Over》:繪圖 API 終戰之日?

OpenGL Logo
(圖片來源:www.cnblogs.com)

原文出處:OpenGL 3 & DirectX 11: The War Is Over

現今在 DirectXOpenGL 皆已相當普及的年代裡,我們似乎也逐漸淡忘了兩者從前的那段江湖恩怨。在著名硬體網站 Tom’s Hardware 的這篇專欄文章裡,作者帶領我們重新回顧這場「繪圖 API 戰爭」中的起伏轉折,以及 OpenGL 3 與 DirectX 11 的未來展望,是篇值得仔細閱讀的好文章。

「DirectX 最殺!很強很邪惡的微軟帝國萬歲!」
「想跨平台嗎?OpenGL 才是唯一的光明道路!」
「我是初學者,應該要選擇 DirectX 或 OpenGL?」
「我想做出一款超棒超好玩的遊戲,要用 DirectX 還是 OpenGL 比較好?」

身為遊戲程式設計者,如果你有定期瀏覽國外各大程式論壇的習慣,應該會對以上這些問題感到非常親切、熟悉,而且可能還會有些反感吧?在遊戲程式設計相關領域的討論區裡,最常見的萬年討論串非「DirectX 與 OpenGL 的比較」莫屬。DirectX 與 OpenGL 雙方各有死忠的支持者陣營,只要在網路上裡提出類似以上敘述的問題,往往會引來雙方擁護者激烈的對抗與辯論;如果又不小心觸動了某些資深程式設計者的「逆鱗」,就更加會戰到天荒地老無以復加。

在過去的短短幾年之內,我們親身經歷了消費性 3D 顯示卡市場的爆炸性成長。從以前只有硬派玩家會花大錢購買的「3D 加速卡」,到現在幾乎已成為標準配備的「3D 顯示卡」,電腦繪圖硬體不僅成功地打入了一般消費者的市場中,其性能也獲得革命性的突破,目前 GPU 的電晶體數量甚至已經超越了 CPU。時至今日,DirectX 與 OpenGL 在電腦繪圖與遊戲業界中的地位,究竟是處於分庭抗禮的情勢,或者已經分出了勝負?且讓我細說從頭。

這場由 Microsoft(簡稱為 MS)與 Silicon Graphics(簡稱為 SGI)公司相互交鋒的繪圖 API 戰爭,已經持續了十年之久。當年 DirectX 初試啼聲之時,MS 挾其龐大的企業資源以及 Windows 作業系統的市佔率,正摩拳擦掌準備傾全力推行自家設計的繪圖 API 標準。而相較之下,雖然 SGI 的資源比較弱勢,但是行之有年的 OpenGL,早已佔據了電腦繪圖界的王者地位而無可動搖;同時,OpenGL 也得到最強而有力的同盟軍 John Carmack 的支持背書。由於當時使用 OpenGL 開發的 Quake Engine 所達到的驚人繪圖效果,因此使得所有繪圖顯示卡的製造商,都必須提供完整的驅動程式支援 OpenGL 標準,才能夠符合遊戲開發者與遊戲玩家對於顯示卡硬體的期望。

SGI 的 OpenGL 是當時專業繪圖市場中的龍頭老大,佔有極大的優勢,而與此同時 MS 只能夠一切從零出發。要開發出既好用且功能強大的繪圖 API,學習曲線可說是相當的嚴峻;在早期的 DirectX 版本中,很多程式設計者都無法適應那種與 OpenGL 全然不同的複雜程式概念,因此許多人都對於 DirectX 不屑一顧,並不看好它的未來發展。但是 MS 並沒有輕言放棄,隨著每次釋出的全新版本,DirectX 正一步步逐漸跟上 OpenGL 的腳步。

在雙方開戰初期,OpenGL 擁有非常顯著的有利優勢,然而整場戰役的轉捩點,發生於 2001 年 MS 釋出的 DirectX 8 之中。這是首次 DirectX 的 API 不再僅止於拷貝 SGI 的規格標準;MS 在這次 DirectX 的全新版本中,引入了對於整個電腦繪圖界來說極為重要的創新與變革:Vertex Shader 以及 Pixel Shader。頂點著色器與像素著色器的誕生,為繪圖程式開發者們開拓了一條前所未見而且閃閃動人的星光大道。

相較之下,當時 SGI 的主要收益來源是非常昂貴的 3D 繪圖工作站,他們沒能預期到 3D 繪圖顯示卡市場的驚人需求爆發,而 ATI 與 Nvidia 這兩間新興的顯示卡廠商,又竟然能以相當低廉的價格,將繪圖顯示卡打入遊戲玩家的市場。另一方面,OpenGL 規格標準的發展,也受到各軟硬體廠商之間的利益衝突因素牽連而遲遲無法達成共識。而在 MS 這方,卻僅僅與 ATI 以及 Nvidia 兩間公司合作制訂 DirectX 的 API 規格,並且擁有最終的關鍵裁量權,因此能夠相當順利且迅速地持續發展。

在彼消此長的情況下,當 DirectX 9 推出後,更是成功地獲得了一場決定性的勝利。於是,有許多軟體與遊戲的開發者,決定開始使用 DirectX 或者同時提供兩者的支援;只有 John Carmack 以及有跨平台需求的開發者,仍然對於 OpenGL 忠心耿耿,但是他們的陣營已經比從前衰弱許多。當然,OpenGL 陣營手上仍然握有逆轉命運的契機。於是在二年前,OpenGL ARB 組織終於將 OpenGL 的開發權交付給了 Khronos 集團,將一切的希望都寄託在他們的身上。經過了二年的漫長等待後,在今年八月的 SIGGRAPH 研討會中,Khronos 終於發表了萬眾矚目的 OpenGL 3,所有 OpenGL 陣營的支持者莫不期待能夠藉此扳回一成。然而,事情並沒有如原先計畫般的順利。

將時序拉回 2002 年,此時 OpenGL 正逐漸失去電腦繪圖界的領先地位。MS 的 DirectX 9 提出了全新的著色器 (Shader) 繪圖功能以及高階著色語言 (HLSL),而 OpenGL 陣營卻拿不出可以相比擬的功能。在 Shader 繪圖架構問世之後,顯示卡硬體很難再依循著傳統的繪圖管線架構生產製造,於是為了彌補現有 OpenGL 不足之處,各家顯示卡廠商開始各自擴充原有的 OpenGL 規格,自訂出一套自己專屬的延伸繪圖 API。

正當 OpenGL 陣營陷入一片混亂之時,3DLabs 這間公司瞭解到 OpenGL 亟需迅速而徹底的變革,才能夠跟得上顯示卡硬體一日千里的發展腳步,於是當仁不讓地提出一項擁有許多重大改革項目的 OpenGL 重整計畫。首先,他們為 OpenGL 加入了高階著色語言 GLSL,接著為了使 OpenGL 得到良好的效能,必須將 API 進行全面性的整理修改;在 OpenGL 2.0 Pure 的核心規格裡,他們計畫刪除那些過時以及多餘的功能特徵,只留下最符合現今硬體主流架構的功能,使開發者能夠慢慢地由老舊的 OpenGL 1.x 版本,轉移到全新的 OpenGL 2.0 版本。

然而很遺憾地,經過 OpenGL ARB 組織的冗長討論後,這項周全的改善計畫被回絕了。在最終釋出的 OpenGL 2.0 裡,僅僅加入了對於 GLSL 的支援,而 3DLabs 所提案的其他功能全都隨風而逝,導致 OpenGL 2.0 的版本仍然遠落後於 DirectX 所提供的功能。好不容易到了 2005 年時,OpenGL 終於趕上了 DirectX 在三年前所釋出的 API 功能。此時各家顯示卡廠商與軟體開發者,都同意事態不能夠再繼續這樣發展下去,否則 OpenGL 將會逐漸失去地位而被人遺忘。最後,OpenGL ARB 終於在 2006 年時,將接力棒交到了 Khronos 集團手上。

Khronos 以過去管理 OpenGL ES 的高效率與負責態度著稱,在接手 OpenGL 的開發後,他們很快地建立起對外的溝通管道,並且對於 OpenGL 的未來發展與多方廠商進行周詳的討論,最後提出了兩項 OpenGL 發展計畫的里程碑:Longs Peak 與 Mount Evans。首先,在第一個開發里程碑 Longs Peak 中,他們打算刪除那些已經過時的 API,使 OpenGL 能夠集中在一組比較先進的功能組之中,並且提供與 Shader Model 2 相同等級的功能;而第二個里程碑 Mount Evans,則期望能夠加入全新的 API,並且提供與 Shader Model 4 相同等級的功能。

時程很緊迫,需要完成的項目非常多,剛開始的開發狀況仍稱得上是一切順利,沒想到自 2007 年年末開始,Khronos 就不再公布任何關於 OpenGL 新版的開發進度消息,突然間由開誠布公的溝通,一瞬間轉變為完全封閉的態度。直到今年八月 SIGGRAPH 的研討會裡,OpenGL 3 總算是千呼萬喚始出來。但是在驚喜之後,則是失望、不滿以及憤怒的情緒,如同洩洪般在網路討論區裡漫天蓋地而來。

But while some people were expecting a pleasant surprise, Khronos had a serious disillusionment in store for fans of OpenGL.

這些強烈的負面回應,不只是因為 OpenGL 3 比原先預定的時程延後了將近一年的時間才發佈,同時也因為大多數在 Longs Peak 中所承諾的新功能也完全地被捨棄了。檢視最終公布的成果,OpenGL 3 看起來簡直就像是 OpenGL 2.2 版本一樣,只不過是個「增進性的更新」(incremental update) 而已,API 並沒有真正地產生改變。OpenGL 3 所提供的新功能,也與 DirectX 10 非常相似。

根據 Carmack 的說法,OpenGL 3 標準未能達到預期成果的主要原因,在於某些 CAD 軟體的開發者並不滿意 Longs Peak 中制訂的規格。這些軟體廠商,害怕相容性的問題會使得他們的應用程式某些比較老舊的功能失效。深入參與研發程序的 Nvidia 公司 Lichtenbelt 也說:「我們在應該移除哪些功能的議題上,遭遇到意見不一致的情勢,主要是因為不同的市場需求所致。我們發現我們無法做出一個滿足所有人需求的 API。

回過頭來看看另一方的 DirectX 陣營。在 2006 年發佈的 DirectX 10 裡,MS 對 DirectX 整體做出了史上最徹頭徹尾的修改。近年來,傳統的 API 繪圖架構已經快要跟不上顯示卡硬體的發展腳步,因此 DirectX 10 的遠大目標,就是要為未來的硬體架構提供一項穩固的根基建設。然而,DirectX 10 並沒有如預期般獲得遊戲玩家與開發者的喜愛及關注。

對於遊戲玩家來說,即使使用了 DirectX 10 可能也感受不到明顯的改變;更糟的是,新的 API 只為 Vista 以上的系統撰寫,正好為敵視 MS 的使用者找了一項非常充足的開戰理由。而對於遊戲開發者來說,在 Windows XP 仍然佔據絕大多數消費者市場的情況下,DirectX 10 與 Vista 作業系統綁在一起,不僅轉換成本極高而且也發揮不了顯著的市場作用,因此多數的遊戲專案,仍然選擇堅守著傳統的 DirectX 9 標準。

DirectX Logo
(圖片來源:www.socgame.com.tw)

在最近剛揭露初步訊息的 DirectX 11 中,公布了不少值得遊戲開發者引頸期盼的全新功能。DirectX 11 奠基於 10 之上,也可以稱為是一次增進性的版本更新;在 DirectX 11 正式問市以後,許多開發者應該會選擇略過 DirectX 10,直接使用 DirectX 11 開發最新的遊戲。而最棒的是,DirectX 11 不僅能夠向下相容於 DirectX 10 的顯示卡,同時也能夠在 Windows 7 與 Vista 上執行!

在 DirectX 11 的許多新功能中,我個人認為最重要的莫過於多執行緒繪圖功能的支援。再者,在 GPU 的專用開發語言上,相較於 Nvidia 大力推行的 CUDA,DirectX 11 的 Compute Shader 優勢在於能夠同時支援 ATI 以及 Nvidia 的顯示卡,甚至是未來的 Intel Larrabee 顯示硬體,而且也與 DirectX 的功能具備有更佳的整合能力。另外像是 Tessellation 階段的導入、Texture Compression 效果的改善,以及物件導向化的 Shader Model 5 等等,也都是對於電腦繪圖與遊戲開發領域非常具有吸引力的功能特點。

許多人對於 OpenGL 失望之處,不僅是 API 本身的能力,同時也包含被處理的過程。在 OpenGL 3 裡,僅僅勉強跟上了 DirectX 10 的腳步,而在幾乎同一時間裡,MS 已經公布了次世代 DirectX 11 版本的細節。雖然相較於 DirectX 10,最新的 DirectX 11 並沒有什麼革命性的創新之處,但是自 DirectX 10 推出以來,MS 已歷經了二年的困難處境,所以現在 MS 得以在穩健的基礎上,回收當時花費龐大心力重建 API 的功夫。

原文標題所下的「The War Is Over」,已經很明確地表達了作者對於 DirectX 與 OpenGL 之戰的心得感想。但是在文章最後,即便未來的可能性相當難以預期,作者仍希望在後續 OpenGL 3 的更新內容裡,能夠證明他所做出的結論是錯誤的。就我自己的感想來說,OpenGL 仍然是跨平台繪圖應用程式的唯一選擇,我也不希望 OpenGL 從此衰落而一蹶不振,演變成 DirectX 獨占鼇頭的局面。唯有正向的競爭壓力,才能夠加速促進繪圖 API 以及繪圖顯示硬體的發展。

在瞭解了 DirectX 與 OpenGL 兩強相爭的歷史淵源以及來龍去脈之後,或許有些讀者還是會想問:「到底應該要選擇學習 DirectX 或者 OpenGL?」對於想進入遊戲程式設計領域的初學者來說,我的建議是:兩者都需要學習。DirectX 與 OpenGL 具有不同的設計理念與實作技巧,也擁有各自獨具的優勢與弱點;在遊戲業界中,兩方都有廣泛的使用族群,並沒有特別偏向某一方,所以兩者皆不可偏廢。

如果非要從兩者中挑一個入門,那麼我會建議由 OpenGL 開始學習電腦繪圖理論與實作技術。因為學習 DirectX 的初學者,往往很容易被視窗程式的建立以及 COM 元件的架構所迷惑,反而會模糊了學習電腦繪圖程式設計的焦點。若是使用 OpenGL,便可以利用 GLUT 或其他的輔助函式庫,大幅簡化與平台相關的視窗程式建立細節,使學習者能夠專注在電腦繪圖理論與程式實作技術的領域中。當然如果你在進入電腦繪圖領域之前,已經相當熟悉 Windows 視窗程式設計,那麼選擇 DirectX 做為出發點也同樣是沒問題的。

在學會了 DirectX 與 OpenGL 之後,就可以把它們當成「個人工具箱」裡的兩把利器:當我想要學習最新的 Shader 程式設計,將顯示卡性能發揮到極限時,我會拿出 DirectX 這把屠龍刀;而當我有個程式概念想要快速完成雛形試做時,我就會揮舞 OpenGL 倚天劍。不管是 DirectX 還是 OpenGL,隨你自由來去,豈不樂乎?

36 Replies to “《OpenGL 3 & DirectX 11: The War Is Over》:繪圖 API 終戰之日?”

  1. 能同時揮屠龍刀和倚天劍的想必是高手中的高高手:)
    我以前在學校學OpenGL..後來工作開始學Direct3D, 現在突然要用OpenGL寫程式, 一時還不知道怎麼開始XD

    我也認為可以先從OpenGL學, 不過不管學DirectX或是OpenGL, 對於3D繪圖的基本數學還是要熟悉, 這個通常是自學者比較難以克服的地方

  2. 個人是DirectX的Fan,
    也在此塊花了不少功夫,也無心無時間學另一套。
    因為以目前的進攻市場和研發時間,不太可能有多餘的力氣去支援OpenGL。
    除非另有此類的人才和公司有多餘的錢讓我們燒。

    不過還是會繼續觀望DirectX與OpenGL的戰況。
    希望OpenGL別倒下去,還是要有競爭力才有進度的空間存在。

  3. @gino:
    其實兩者的基本概念都是相通的呀,只要以前有學過,想要再重新撿回來都不會太困難。電腦繪圖 API 的初學者,一開始通常都會卡在空間座標系與矩陣轉換的概念裡。 XD

    @Allen:
    你好,

    WoW 在 Windows 平台上,DirectX 與 OpenGL 兩者都有支援;遊戲預設值使用的是 DirectX 繪圖模式,可以在遊戲設定檔中改成使用 OpenGL。至於 Mac 平台上的 WoW,自然就是使用 OpenGL 囉。其實現在很多 Windows 平台上的遊戲,都是使用這樣的作法了。

    @doomleika:
    沒錯~

    @vamper:
    真的是有競爭才會有進步。以技術人的觀點來看,DirectX 11 實在令人充滿期待呀。可以專注在 DirectX 上是很幸福的事情,不過在台灣的遊戲界裡,還是有一些在「非 Windows 平台」上開發遊戲的廠商喔。 :P

    謝謝各位的迴響~

  4. extension不是比較麻煩, 是非常麻煩. NV vs ARB, n ways to do the same thing, 浪廢developers很多的時間!
    當一個API 過了時, 還去搞甚麼backward compatible, 這只會加速API 的死亡. No pain no gain.

  5. 嗯… 應該不算是秘密吧…
    Xbox360: D3D9改,Shader Model 3
    PS3: 獨家 API,Shader Model 3
    Wii: 獨家 API,Fixed Pipeline…

    其實在圖像渲染方面,我覺得自從有硬件加速後,硬件的影響遠遠超越 API 的影響。硬件的大部份功能通常用這兩個 API 都可以使用,只是使用方式不同。而且現時的顯示卡都統一以 Shader Model 來分別。

    現時 OpenGL 在 WindowsXP 上唯一的好處(也是壞處)就是可以使用 NV/ATI 的 extensions 去使用 DX10 的一些功能。

    我覺得與其選擇 API,不如選擇要支持的硬件比較重要。如要支持幾個平台,還是要同時支持多於一個 API、及/或多個 Shader Models。

    如果真的要學習 Computer Graphics,不急於近利者可以考慮從寫 ray-tracer、或者 software rasterizer 開始,可以更清楚地學習每個功能如何實淺。而且,隨著 Larrabee 和 CUDA 等的出現,有可能令 Real-time Rendering 回歸到不使用 D3D 和 OGL API 的世代,更需要一些有基礎知識的人去實作 software renderer。

  6. @ysorigin:
    你好,
    你的問題 Milo 已經回答的很詳細囉。在非微軟的遊樂器平台上,使用的大多是獨家繪圖 API。

    @Percy:
    你好,
    我也是這麼認為。我想只要是曾經被 OpenGL 各種不同 Extension 荼毒過的人,應該都能認同這個看法吧。

    @extension:
    你好,
    我認為軟體規格的 Backward Compatibility 實在是一把雙面刃。如果不做,會被 User 罵到臭頭;如果做了,又可能會被 Developer 批得半死。OpenGL 可以說是背負著上個時代的包袱,現在不論是要改善既有的 API 或者發展全新的架構,當務之急就是必須擺平各軟硬體廠商之間的利益衝突才行。

    相較之下,微軟非常大膽的斬斷了難纏的 Backward Compatibility 問題,使得 DirectX 10 只能在 Vista 上運作,雖然被使用者批評至體無完膚的地步,但也預先為 DirectX 11 的前途鋪下了一條康莊大道。只能說微軟的這一著棋,實在是下得相當犀利呀!

    @Milo:
    非常感謝你的專業說明~ ^_^

    如你所述,如果能夠從 Software Renderer 的層面開始學習圖學理論與實作技巧,更能夠訓練出紮實穩固的能力。我也相當期待 Larrabee 以及 Multi-Core GPU 的發展,或許在不久的將來,將會由現在的繪圖 API 戰爭,轉變為 CPU 與 GPU 相互跨界搶地盤的全面戰爭呢。

    感謝以上各位的心得分享。

  7. @游离子:
    你好,
    現在只能寄望在未來的 OpenGL 新版本裡,Khronos 能夠拿出魄力做出突破性的變革了。

    謝謝你的回應。

  8. 看完這篇文章的心得是:寫作(或亦國文能力)真的很重要。
    在掌握自身專業的同時,翻譯和寫作表達能力是相當重要的。
    首先從報導他人文章著手,進而報導自己的專業。
    在這持續變化的情事當中,廣闊學習是很重要的。

  9. @Moses:
    你好,

    我認為寫作就像口語表達一樣,如果能擁有良好的文字表達能力,應該會是一項很不錯的優勢。我自己也還在邊寫邊練習當中。同時,也不能以自己的現況自滿,不論是身處哪個業界,都要保持不斷學習的動力,才能夠一直成長一直成長~

  10. 说实话看完后觉得确实挺无奈的.OpenGL背负着如此沉重的一个历史包袱….
    现在市场需求的更多是DirectX掌握者,逐渐出现一边倒的状况.
    一度怀疑自己的坚持有没有错.或者我也应该抽时间去熟悉DirectX程序的设计模式,
    但毕竟这个代价太大了,自己快进社会了,在OpenGL中却还有很多东西想学,
    盲目地进入一个相似而不同的领域反而会令现在的自己更加迷茫吧.
    于是还是固执下去~

  11. @potatososo:
    Thanks. ^^

    @zwqxin:
    你好,

    堅持學習 OpenGL 也沒什麼不妥,待你學習到精義後,若想往另一頭學習 DirectX,便會覺得輕鬆許多。其實在電腦圖學程式設計中,大部分的概念與理論都是可以相通的,只是使用的慣例與 API 外貌有所不同罷了。我認為只要自己能保持開放的心態,不去排斥學習其他知識,你一定可以做得很好。 :)

  12. 請問OpenGL3.2是否需要特定的剛研製出來的顯示卡,
    還是說有GPU的顯卡更新一下驅動程式就可以了。

  13. 開發同人遊戲的一點心得

    「OpenGL的extension非常麻煩」
    我覺得不是API本身不好用,而是微軟推銷自家產品的策略所致,Windows內建的OpenGL DLL和SDK始終停留在1.1版,1.2以上的功能微軟不強迫廠商實作就變成各自為政,使用者也要手動宣告常數和取出函式
    相對地Direct3D更新頻繁且都有出對應的SDK,顯示晶片廠商要不斷實作新版本是比較辛苦,但使用者可以輕易使用最新的功能
    假如Windows內建的OpenGL SDK更新到2.0以上,1.2~2.0的擴充只要連結library就可以使用而不用呼叫wglGetProcAddress()取出,相信麻煩會減少很多
    Linux的library就有支援到1.4以上

    在Windows毫無疑問對Direct3D比較有利,要是哪一天微軟把Windows做成不能用OpenGL那等於打死OpenGL了

    不過不管用哪個API顯示晶片還是同一個,底層的觀念很多是共通的,我同意Milo的看法「自從有硬件加速後,硬件的影響遠遠超越 API 的影響」「與其選擇 API,不如選擇要支持的硬件比較重要」

  14. @Lionheart:
    你好,

    OpenGL 3.2 的規格我不熟悉,不過我想你最好是先確認顯示卡硬體本身的規格,或是查詢顯示卡廠商所釋出的相關說明資訊,才會比較保險喔。

    @Shark:
    OpenGL 的 extension 的確是個麻煩物阿。除非有絕對的必要性,否則我都盡量不使用 OpenGL Extension API。而毫無疑問地,如果要在 Windows 平台上開發遊戲的話,說到底還是使用 DirectX 的麻煩和困擾最少;若是使用 OpenGL 的話,三不五時就會遇到神秘的硬體相容性問題哪。

  15. 謝謝博主。3.2的問題我已經懂了。
    OpenGL extension真是太揪心了。
    而且沒有好的教程。好像有一本2005年的OpenGL Extension Guide,據說還是像reference,而不是tutorial。
    不知半路可否知曉最新的關於OGL extension的書籍?
    島內是否有哪個專門的論壇討論相關問題?
    謝謝咯。。。

  16. @半路、lionheart:
    麻煩的是微軟的SDK,不是OpenGL的extension

    首先請問是做什麼事要用到extension?先想好要做什麼事再決定學什麼,而不是把extension全部背下來
    例如shader就只看跟shader有關的部分就好了,很多功能其實都可以用shader取代
    就像D3D一般也不會把device caps列出的東西全部搬出來用

    書可以看這一本
    http://www.books.com.tw/exep/prod/booksfile.php?item=0010421642
    我覺得不錯的地方是以實際應用來介紹,沒有「只是為用而用」的毛病
    看了會發現實際用到的擴充只有少數幾個,所以我向來不覺得OpenGL擴充麻煩

    想知道哪個晶片有哪些擴充可以用這個軟體,它有很多晶片的資料
    http://www.realtech-vr.com/glview/

  17. @lionheart:
    你好,

    的確你所提到的那本書,比較像是參考手冊而非教學書籍。另外,很遺憾的是,在台灣我沒見到專門討論 OpenGL 的論壇哩。

    @Shark:
    你連結中的那本書確實很不錯!這本書算是很少見的中文優秀遊戲程式設計書籍,有興趣學習繪圖 API 應用的讀者,可以買來仔細研讀。

    從前我也是從 NeHe 的網站教學文章,開始學習 OpenGL 程式設計的哩。

  18. 使用GLEW 或是GLEE Library就可以不用自己使用wglGetProcAddress().直接就可以用很多OGL extension以及OGL 3.x, OGL 4.0的功能(當然還是得有顯示卡與驅動程式支援)

  19. @bylee:
    你好,

    GLEW 和 GLEE 都是很實用的開源函式庫,可以幫助開發者減少部份使用 extension 的頭痛問題。

    謝謝你提供的資訊。 ^^

  20. 一點都不棒, 因為DirectX 11綁Windows Vista/7, 不能在Windows XP下安裝; 而Windows 7正是眾人唾棄的Vista改良版.

  21. @怪手:
    如果你有深入瞭解 DirectX 11 的架構的話,就會發現它與過往的 DirectX 9/10 可說是有極大的差異性。DirectX 11 將繪圖 API 又向上開拓了一個層次,但也正因如此,DirectX 11 才無法向下相容於舊有繪圖架構的 Windows XP 作業系統。

    這樣的作法,雖然會受到玩家與消費者的埋怨,但對於遊戲開發者來說,終於不用再考慮向下相容性的議題,可真是一大福音哪!

  22. OpenCL普及後,說不定一切都會改觀了。不論DirectX與OpenGL都可以用OpenCL作為底層來實作。
    跨平台再也不是問題,在non-windows也可以跑DirectX,說不定還會跑出一個新的3D Graphic library統一OpenGL與DirectX的分裂局面

  23. @ufo:
    一統江湖的 3D 繪圖函式庫,聽起來是個很美好未來。但我想只要在封閉式架構能讓廠商獲得利益的情況下,DirectX 以及其他各家繪圖 API 就還是會繼續生存下去的。

  24. 在PC上或許openGL比不上directx,但現在遊戲不僅僅限制在PC,移動設備崛起,瀏覽器也可以製作3D,在這點上openGL未來比directX更光明。

  25. 其實誰勝誰負也沒什麼關係, 因為除了WINDOWS也就要用OPENGL
    只是WINDOWS上用DIRECTX 一定比較好而已

    所以兩樣都要學習, 而且其實他們的使用方式某程度上也很相似
    學了又不會有什麼損失

    不過先學OPENGL比較好, 因為可以從JAVA這些比較簡單的語言學起,
    不用一開始就對著那令初學者頭大的C++

Leave a Reply