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

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


本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/didibabawu055/archive/2009/02/21/3919401.aspx