[转载]OpenGL是专业的3D API,DirectX则是个杂交品种,混合了许多东西在里面,我个人认为OpenGL
的地位是不可动摇的,它有很多优势,做游戏并不是OpenGL的目标,这和DirectX完全两回事,拿
OpenGL做游戏有点杀牛刀杀鸡的味道。而且OpenGL独立于平台移植性好,DirectX则不行,如果是做游戏,可以把OpenGL和DirectX结合起来,比如声音之类用DirectX,其实看看现在游戏
的效果也知道OpenGL的效果比DirectX好,不过OpenAL不也快出了么。至于选择那种API看需要了
OpenGL类似于高端专业工具,不是每个人都必须学会,应用面也窄。如果是做游戏,可以用
DirectX,毕竟是配合windows系统。至于OpenGL的效果,要是不会使用OpenGL扩展简直白学OpenGL了,国外网站上OpenGL的效果图多得很,找来看看就知道了。还有,3dsmax的渲染几乎就是直接使用OpenGL做的,不过我选择使用OpenGL驱动,显示速度倒不见得有多大提高。
BTW,我是OpenGL的坚决拥护者,而且正在用它做虚拟现实的东西。
DirectX Vs OpenGL
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出了错,它什么都做得出……
[此贴子已经被作者于2007-8-11 20:02:50编辑过]