3D編程的第一個問題就是用何種API:OpenGL還是Direct3D?以下是它們的一些比較:
1 操作系統(tǒng)平臺:
如果你的操作系統(tǒng)是Windows,你可以選擇。如果是Unix、Linux等,那么就只能用OpenGL。
2 易學(xué)易用性:
OpenGL相對來說比DirectX易學(xué),能夠很快入門(這是公認(rèn)的)。即使你將來可能要用到Direct3D,OpenGL仍然不失為一種好的3D編程的入門途徑,OpenGL中原汁原味的3D函數(shù)簡直和大多數(shù)計算機圖形學(xué)教材中的偽代碼一模一樣。
3 文檔支持:
在網(wǎng)上你可以找到很多很好的OpenGL的文檔、教程、例程等,特別是“紅寶書”(相關(guān)鏈接和文檔可以在本站OpenGL欄目找到)。但是,DirectX SDK所提供的文檔難嚼多了(公認(rèn)),在網(wǎng)上你也難以找到好的教程(本站的DirectX欄目所提供的幾乎是全部能找到的不重復(fù)的中文資料)。另外,書店里有不少OpenGL的中文書,而DirectX只有“希望”出的一種,并且不是講Direct3D的。
4 關(guān)于COM:
DirectX是基于COM的,而OpenGL不是。如果你對COM不是那么感冒的話,最好先選擇OpenGL。但是,如果你將一直在Windows平臺上做3D編程的話,總應(yīng)該熟悉Direct3D,因為Microsoft/SGI/HP共同開發(fā)中的一種新的3D接口是基于COM的,它將和Direct3D比較接近。
5 移植性:
DirectX與Windows緊密相連,難以移植。而OpenGL是一種非常“干凈的”API,無論從VB語言到VC語言、還是從Windows平臺到Linux平臺(幾乎一樣的C代碼)的移植都非常容易(并且在GLUT里提供了平臺無關(guān)的窗口管理庫)。
6 多媒體性能:
由于DirectX包括了DirectSound、DirectInput等,如果Direct3D和它們一起使用,將比較容易控制聲音、操縱桿等,這是DirectX的整體優(yōu)勢。當(dāng)然,沒有人反對你同時使用OpenGL和DirectSound,Quake就是這樣做的。
7 速度:
很難說哪個更快,QUAKE用的是OpenGL的引擎,而Unreal用的是Direct3D,它們都非常著名。其實,程序的速度并不在于你選擇了OpenGL或DirectX,它還至少和兩個因素有關(guān):你寫的代碼的質(zhì)量(依賴于你對你使用的接口的熟悉程度),硬件的支持(包括硬件的驅(qū)動程序的支持)。
8 強壯性:
這樣說吧,OpenGL調(diào)用發(fā)生了錯誤,它什么都不做;而DirectX出了錯,它什么都做得出……
本文來自CSDN博客,轉(zhuǎn)載請標(biāo)明出處:http://blog.csdn.net/didibabawu055/archive/2009/02/21/3919401.aspx