3D編程的第一個(gè)問(wèn)題就是用何種API:OpenGL還是Direct3D?以下是它們的一些比較:    

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


本文來(lái)自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/didibabawu055/archive/2009/02/21/3919401.aspx