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