为何你应该使用OpenGL而不是DirectX?


 
这是一篇很意思的博文,原文连接为:http://blog.wolfire.com/2010/01/Why-you-should-use-OpenGL-and-not-DirectX
你们能够思考一下:why we choose a closed source API when the open source is equally good or better?

当咱们遇到其余游戏程序员并谈论咱们使用OpenGL开发Overgrowth时老是会遇到怀疑的眼神。为何要用OpenGL? DirectX才是将来。当咱们使用OpenGL去告诉显卡如何工做时,房间的温度降低了10度(啥意思?我一直觉得A卡和N卡的区别,没想到做者认为是API的问题?Holy。。。)。html

OpenGL 是什么?

OpenGL

在1982年,Silicon公司开发售卖使用称为Iris GL的API的高性能图形显示终端。随后的几年,Iris GL变得臃肿和难以维护,直到silicon决定完全走向新的一步:彻底的重构Iris GL并开源。他们的竞争者可使用这种新的开放图形库(OpenGL)可是做为回报,他们必须帮助维护更新该库。    linux

现在,OpenGL 由Khronos Group管理。一个由不少公司参与组成的非营利组织,重点是维护高质量多媒体API。在底层,由 OpenGL Architecture Review Board (ARB)来管理。各类游戏平台都支持OpenGL,包括:Mac,Windows,Linux,PS3,Wii,IPhone,PSP和DS,除了XBox,下面咱们就要介绍它:程序员

DirectX 是什么?

自从MS-DOS时代,微软就明白游戏是一个用户选择操做系统的重要依据。基于这个缘由,在1995年,微软建立了一套专用库以鼓励你们开发winodw95平台独占的游戏。这些库包括Direct3D,DirectInput和DirectSound,整个集合就是你们知晓的DirectX。当微软2001年进军游戏市场时,XBOX意图统治次世代游戏市场。web

看看如今的情况,微软的战略无疑是成功的。大多数的PC游戏都是用DirectX,大多都运行在windows或者Xbox360上。但有些例外,它们没法再竞争对手的平台上,好比Playstation, Mac OS和Wii。因而,它给咱们带来一个新的问题:算法

为何你们都是用 DirectX?

使用DirectX是由于API的选择是基于游戏开发的积极反馈,这一切都发生在2005年:canvas

若是一个API越流行,那就有越多人用,而后它就会更流行,如此循环。。。这种网络效应带来的结果就是:更流行的API得到更好的硬件厂商支持,图形程序员随后更意于选择他们已经熟知的API。windows

DirectX的胜出得益于微软的两次十分尖锐的战役,围绕XBox360和windows vista,也包括着关于OpenGL这种开源项目都面临着的FUD(恐惧,不肯定,怀疑),以及DirectX夸大宣传的优点。今后,这种网络效应将会一步步加强直到OpenGL从地球消失。(做者好悲观。。。)api

1. 网络效应与恶性循环

Win平台上,DirectX的图形驱动显然比OpenGL的驱动获得更好的维护。这是因为厂商支持引发的恶性循环。游戏开发者选择是用OpenGL仍是DirectX由不少因素决定,显卡厂商获得的OpenGL驱动BUG比较少,由于用DirectX的比较多,因此不能很好的支持OpenGL的驱动。网络

简单来说,越多程序员懂得DirectX甚于OpenGL,那么更多游戏使用前者开发。这会引发又一个恶性循环,更多地项目使用DX开发,更多地程序员须要学习如何使用它。。。。工具

2. 关于 OpenGL的FUD效应 和 Vista

微软在vista发布时对OpenGL使用了FUD战术。在2003年,微软推出了前面介绍维护底层的OARB组织--预示着微软再也不会对OPGL的将来感兴趣。在2005年,微软在SIGGRAPH和WinHEC上给你们的假象就是他们从vista开始将不会支持OPGL除了对XP程序的向后兼容。这种版本的OPGL将会创建在DirectX之上,这固然引发严重的性能问题。这场战役致使不少优秀程序员转战DX。

当vista发布后,他又容许厂商建立快速可安装客户端驱动(ICDs)以保留对原生OpenGL的支持。OpenGL发布消息称OpenGL依旧是第一阵营,可是OPGL在vista上的效果始终不如Direct3D。不幸的是,这种破坏已经给OPGL带来了巨大的打击。

3. 误导市场的战役

win7发售时的市场策略与vista一模一样,微软展现了before和after效果。不少玩家认为从dx9转到dx10就能神奇般的把图形变得更亮,或者说从Halo1变成Crysis。游戏评论证明Crysis的DX9版与DX10无区别,而画面的改变事实上因为调整了某些config文件。

在拥有大量游戏的微软市场策略下,一些有看法的程序员与卡马克大神拒绝追赶他。他说:“我的来说,我不会当即跳进DX10.我会尝试作些改变直到我真的须要它。”

(我以为做者是个悲剧,传言说下一代的ID引擎是基于DX的,卡马克也没说不用dx呀。。。)

为何咱们要用 OpenGL?

获得更少的厂商支持,游戏再也不大量使用,被微软紧追猛打,市场生存空间狭小,为何咱们还要用它?你们用dx不更省事么?不,由于实际上,OpenGL比DX更强大,支持更多的平台,这是将来游戏的基础。

1. OpenGL 比 DirectX 更强大

OPGL有比DX更快的draw调用(若是你不信请看这里this one),而且它能经过厂商扩展第一时间使用GPU的新特性。OPGL让你能在多平台上直接访问显卡硬件,而DirectX只能在他们最新的操做系统上提供一些最新技术的展现。DX11鼓吹的Tesselation其实三年前就能够用OPGL使用了。我不知道之后还会有什么新技术,但我知道OPGL必定最早可用(这个“卖点”也灰常吸引译者本人)。

2. OpenGL 是跨平台的

暴雪老是同时发布游戏的mac版本,这是他们成功的一项法宝。

就像卡马克被问Rage是否是DX游戏时谈到:“它事实上用的是OpenGL,尽管咱们使用了D3D-ish API在Xbox360平台和PS3的CG。你使用的技术很微小一部分,写的上百万行代码只有少数部分才会用API,可是数百万行的代码却依赖那些不可知的目标平台。”就像卡马克说的,为何不会跨平台作好准备而让本身被DX限制?

3. OpenGL 是将来游戏更好的选择

非盈利的开源OpenGL用于创造一个容许用户在各类平台都能高效能发挥的图形库。他被垄断企业不断攻击,这其实也在伤害您本身的利益。咱们须要自由和竞争来提高质量和下降价格。一个微软垄断的局面对游戏开发者和玩家来讲都是很是杯具的。

OpenGL 可否力挽狂澜?

回到1997年,那时的状况和如今如此类似。微软为DX发动了疯狂的市场战役,随后你们都“知道”它比OpenGL更快。随着Chirs Hecker发表的open letter denouncing DirectX。状况有所改变。随后,卡马克发布了著名的OpenGL rant,并掏出大把钱用OpenGL开发Id工做室的项目,一度证实了DX不可能达到的3D性能。

这一课已经被渐渐遗忘。不少开发者陷入了dx的市场诱惑。

若是你使用OpenGL,你能够比DX11更早使用更快更强大的显卡特性,而且用于全部版本的windows,mac和linux,一样也可用于PS3,Wii,PSP,DS和iPhone。你也能够在 rapidly-developing WebGL standard使用这些特性(用于次世代网页游戏)。

若是你是一个游戏开发者,你只需搜索资料并思考,而后想一想OpenGL是不是更好的选择。

(译后感:本人玩的是C++,这篇文章让我以为似曾相识,语言之争也从未结束,也将不会结束。API是API,就像卡马克说的,一个游戏不多一部分才用到API。语言呢也终究是工具,因此咱们的算法才如此的“泛型”。)

相关文章
相关标签/搜索