OpenGL 与 DX的争论

不羁的心 提交于 2019-11-29 10:44:25

DX与OpenGL的争论总是大家的一个热门话题,而且在国内这个话题尤其热烈的很阿。

很多人都有一种看法:OpenGL面向高端的图形图像处理,而DX更适合游戏的开发。

事实真的是这样的么?

我们先来看一下OpenGL与DX的发展再来讨论这个问题。

首先,OpenGL起源于1992年,由SGI公司首先开发的图形函数库。之后用和微软共同编写了WindowsNT的OpenGL,

而在随后的时间里,微软写多次在系统中支持OpenGL。

今天的OpenGL是什么呢?

 

2010年7月26日发布OpenGL 4.1和OpenGL OpenGL Shading Language 4.10。OpenGL4.1提高视觉密集型应用OpenCL™的互操作性,并继续加速计算剖面为核心的支持和兼容性第一次推出的OpenGL 3.2,使开发人员能够使用一个简化的API或保留向后兼容现有的OpenGL代码,这取决于他们的市场需求。《百度百科》

 

可以这么说,一直以来,OpenGL都是致力于为所有的平台提供一种完全通用的图形图像处理技术的接口来给程序员使用,今天的OpenGL是包含的大量的各种图形图像表现函数的,通用API接口。

这是为什么今天我们会发现大量的基于OpenGL的程序。因为在所有的平台下你都可以使用OpenGL,而OpenGL的大量的底层函数使得开发者可以轻松的实现各种表现特效。

那DX又是什么呢?

简单来说,DX就是专门为Windows平台开发者提供的一套图形表现API。微软曾一度因为DX的表现力的不足而使用OpenGL作为补充。而DX为开发者提供的好处就是提供了大量的中层和高层的API来做基础的渲染。

对于很多开发者来说,DX的最大的问题似乎仅仅是他只能用于WIndows平台。

其实DX是一个从高层到底层的整体API函数库,而且在DX内部其实也是有一部分OpenGL作为基础的。

现在我们回到我们开头的问题,OpenGL和DX哪个更优秀呢?

OpenGL到2010年才更新到了4.1, DX已经更新到了11。似乎DX得胜了呢。

但是首先我们要注意一点:OpenGL致力于充分发挥显卡的能力,为显卡的高效运算提供底层的API支持,当然,这个层次比驱动要高那么一层。而DX则一直要同时兼顾高层和底层的API。所以OpenGL更新的比DX慢是正常的。

那么我们从实际使用的效果来看看两者的表现吧:基于DX的Windows系统和基于OpenGL的*nix系统在桌面特效上的差别就已经开始出现了,DX调用了大量的资源来处理的特效,OpenGL则轻松的就完成了。

Windows7宣扬的3D特效,拿来和OpenGL的特效比较一下就会发现Windows7的特效太简单了。

高效、稳定、低耗几乎就是OpenGL的别名。这也使得许多优秀的图形图像处理软件逐渐抛弃了Windows平台而转投其他操作系统的怀抱。在Windows平台下,图形图像处理的专业软件公司仅仅剩下了Adobe,Maya,3D-MAX这些为数不多的公司。

而基于OpenGL的,除去Mac OS的专业处理不说,仅仅在Linux下就有大量的优秀软件。光是Linux每个免费的发行版都会赠送的开源图像处理软件GIMP就可以和Photoshop相媲美了。

而近期的好莱坞将图形图像处理系统完全改用Linux更加说明了OpenGL的处理能力大大超过了DX。

既然OpenGL远远的超过了DX,那为什么大多数游戏都是基于DX呢?

大量的华丽游戏表现都是基于DX的,这是一个不争的现象。而正是这个现象给了很多人这样的错觉:专业的处理是OpenGL强,而游戏的处理是DX强。

做过专业处理的人都知道,专业的影音图像处理的时候对系统资源的消耗远非游戏可以比拟的。可是为什么游戏都是基于DX做图形表现呢?

我们来看一下各种操作系统的市场占有率:

 

根据2011年的统计(原址见:http://tech.weiphone.com/2011-03-04/2011_231585.shtml

Windows - 89.69% (89.70%)
Mac - 5.19% (5.25%)
iOS - 1.81% (2.05%)
JavaME - 1.04% (0.91%)
Linux - 0.92% (0.95%)
Android - 0.52% (0.49%)
Symbian - 0.35% (0.28%)
BlackBerry - 0.12% (0.12%)
Windows Mobile - 0.03% (0.03%)
Playstation 0.02% (0.03%)

 

大家发现了什么? Windows凭借其易用性,占有了将近90%的市场份额。这就足以解释为什么绝大多数游戏都是基于DX的。游戏公司是要成存的,而游戏公司的利润基础是基于用户数量的(一个游戏如果卖到几千美元,那就没人买了)。为了让更多的人接触到游戏,游戏公司只有让游戏运行在拥有更多市场份额的系统上。要运行于Windows,而Windows不提供OpenGL,只提供了DX。

那么我们有两个方法来解决:使用OpenGL,让用户自行安装;或者我们改用DX——对于游戏公司,显然是选择了后者。

为什么?因为为了游戏安装OpenGL这样一个对于他们来说完全没必要的东西会使得游戏公司失去很多用户。

于是很多公司大多是在OpenGL下设计,然后把设计好的模型拿到DX下直接应用。或者在DX下来重绘已经定型的模型。

(连中国人最喜欢的魔兽世界,可都是有Mac版本的阿)

还有另外一些开发者,OpenGL的底层函数来作图形表现需要写太多函数,而且OpenGL的接口对于习惯了MC的高层接口的人来说也太不友好了,他们也会很自然的采用DX来作开发。

在游戏方面,举点简单的例子,Linux下有许多3D的游戏大小仅仅是是100多M,而且表现能力也不俗。

到了这里,我们应该已经有一个清晰的认识了。对于图形表现的能力来说,OpenGL是远远胜于DX的,但是Windows的巨大的市场份额,决定了DX应用的广泛。不过随着Linux的逐渐普及,基于OpenGL下的高画质的游戏大量出现也将不会离我们太远了。

原帖地址:http://hi.baidu.com/ashurta/blog/item/d863678bccf988669e2fb4c8.html

转载于:https://my.oschina.net/gal/blog/200207

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!