DirectX 与 OpenGL-DirectX Vs OpenGL

作者: 来源: 日期:2009-10-19

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 出了错,它什么都做得出……

相关文章