DirectX 与 OpenGL-OpenCL、OpenGL 和 DirectX 的区别是什么

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

什么是 OpenCL?

OpenCL 全称 Open Computing Language,是第一个面向异构系统通用目的并行编程的开放式、免费标准,也是一个统一的编程环境,便于软件开发人员为高性能计算服务器、桌面计算系统、手持设备编写高效轻便的代码,而且广泛适用于多核心处理器 (CPU)、图形处理器 (GPU)、Cell 类型架构以及数字信号处理器 (DSP) 等其他并行处理器,在游戏、娱乐、科研、医疗等各种领域都有广阔的发展前景。

OpenCL 1.0 主要由一个并行计算 API 和一种针对此类计算的编程语言组成,此外还特别定义了:

1、C99 编程语言并行扩展子集 ;

2、适用于各种类型异构处理器的坐标数据和基于任务并行计算 API;

3、基于 IEEE 754 标准的数字条件 ;

4、与 OpenGL、OpenGL ES 和其他图形类 API 高效互通。

什么是 OpenGL?

OpenGL ™ 是行业领域中最为广泛接纳的 2D/3D 图形 API, 其自诞生至今已催生了各种计算机平台及设备上的数千优秀应用程序。OpenGL ™ 是独立于视窗操作系统或其它操作系统的,亦是网络透明的。在包含 CAD、内容创作、能源、娱乐、游戏开发、制造业、制药业及虚拟现实等行业领域中,OpenGL ™ 帮助程序员实现在 PC、工作站、超级计算机等硬件设备上的高性能、极具冲击力的高视觉表现力图形处理软件的开发。

OpenGL(全写 Open Graphics Library)是个定义了一个跨编程语言、跨平台的编程接口的规格,它用于三维图象(二维的亦可)。OpenGL 是个专业的图形程序接口,是一个功能强大,调用方便的底层图形库。OpenGL 的前身是 SGI 公司为其图形工作站开发的 IRIS GL。IRIS GL 是一个工业标准的 3D 图形软件接口,功能虽然强大但是移植性不好,于是 SGI 公司便在 IRIS GL 的基础上开发了 OpenGL。OpenGL 的英文全称是“Open Graphics Library”,顾名思义,OpenGL 便是“开放的图形程序接口”。虽然 DirectX 在家用市场全面领先,但在专业高端绘图领域,OpenGL 是不能被取代的主角。

Open GL 仍然是唯一能够取代微软对 3D 图形技术的完全控制的 API。它仍然具有一定的生命力,但是 Silicon Graphics 已经不再以任何让微软不悦的方式推广 Open GL,因而它存在较高的风险。游戏开发人员是一个有着独立思想的群体,很多重要的开发人员目前仍然在使用 Open GL。因此,硬件开发商正在设法加强对它的支持。Direct3D 目前还不能支持高端的图形设备和专业应用; Open GL 在这些领域占据着统治地位。最后,开放源码社区(尤其是 Mesa 项目)一直致力于为任何类型的计算机(无论它们是否使用微软的操作系统)提供 Open GL 支持。

今年 08 年正式公布 OpenGL3.0 版本。并且得到了,nv 的支持,其官方网站上提供针对 N 卡的 sdk 下载。

什么是 DirectX?

DirectX 是一种应用程序接口(API),它可让以 windows 为平台的游戏或多媒体程序获得更高的执行效率,加强 3d 图形和声音效果,并提供设计人员一个共同的硬件驱动标准,让游戏开发者不必为每一品牌的硬件来写不同的驱动程序,也降低用户安装及设置硬件的复杂度。这样说是不是有点不太明白,其实从字面意义上说,Direct 就是直接的意思,而后边的 X 则代表了很多的意思,从这一点上我们就可以看出 DirectX 的出现就是为了为众多软件提供直接服务的。

DirectX 是由很多 API 组成的,按照性质分类,可以分为四大部分,显示部分、声音部分、输入部分和网络部分。

显示部分担任图形处理的关键,分为 DirectDraw(DDraw)和 Direct3D(D3D),前者主要负责 2D 图像加速。它包括很多方面:我们播放 mpg、DVD 电影、看图、玩小游戏等等都是用的 DDraw,你可以把它理解成所有划线的部分都是用的 DDraw。后者则主要负责 3D 效果的显示,比如 CS 中的场景和人物、FIFA 中的人物等等,都是使用了 DirectX 的 Direct3D。

OpenCL、OpenGL 和 DirectX 之间不得不说的故事

业界对 Apple 的 OpenCL 的支持将成为它发展的重要因素,早在 90 年代中期,微软就曾经努力阻止 OpenGL 成为行业的标准,以推行自己的 DirectX 显卡软件和游戏工具。微软的 Direct X 起初的战略是为了推动 DOS 游戏开发者转向 Windows,从此之后它就被绑定在 Windows 下为 PC 游戏服务,所以它仅支持 Windows。

断发布新版的 DirectX 也推动了开发者转向最新版的 Windows,比如最新版的 DirectX 10 就带来了不少 Vista 专属游戏,从而推动了 Vista 的销量,然而它并未达到预期的效果,因为 Vista 的速度阻碍了 DirectX10 游戏的市场,开发者只能将目标再次转向 XP。

OpenGL 和 Apple

OpenGL 的前身是高端图形工作站厂商 SGI 在 80 年代所开发的 IRIS G,它在 90 年代初期成为了开源的标准。当时微软在它的 Windows 95 中发布了 Direct3D,将它作为 OpenGL 的竞争对手。而在 90 年代末,微软曾经和 SGI 进行了 Fahrenheit 项目的开发,试图将两者结合起来,但是没有成功。之后微软继续开发 DirectX 并与 GPU 厂商合作,留下 OpenGL 任其发展。

OpenGL 之后几乎逐渐消失,直到 90 年代末 Apple 放弃了自己的 QuickDraw 3D,将 OpenGL 作为 Mac OS X 的官方 3D 库。Apple 的系统给 OpenGL 程序带来了不少拥护者。之后 OpenGL 正式被 Linux 采用,现在主流的游戏平台,包括 PSP,PS3 和 Wii 都支持该技术。

但是微软的 Xbox360 例外,它采用了自己的 DirectX 图形库,而将 OpenGL 排除在外。如今 OpenGL 对 DirectX 来说比以前更有竞争力了。而微软计划在 Windows 7 中的 DirectX 11 增加类似于 OpenCL 的技术,以实现 GPGPU 运算。但是 Apple 的 OpenCL 能更紧密地与 OpenGL 代码协同工作,能带来更广泛的支持。 Apple 还将 OpenCL 作为一个免费的,开源的标准,让任何人都能参与到该平台中来。

OpenGL 和 OpenCL 设计的相似性,使开发者更易于开发。比如在 OpenCL 下进行数据虚拟化计算,可以把相同的对象在 OpenGL 上进行图形渲染。同时 OpenGL 下的图形渲染可以在 OpenCL 下进行处理和转换。

OpenCL 得到了 GPU 厂商 NVIDIA 和 AMD 的支持,同时支持 Apple,SONY, 任天堂的平台,还支持 Linux 和 Windows,而且任何公司的开发者都可以参与到该技术的发展中来。

相关文章