天下2领域:如今游戏领域已经是D3D的天下

如今游戏领域已经是D3D天下但还是有人不断搬出10年前JohnCarmack话批驳D3D尽管Carmack后来多次声明D3D已经有了很大改观以前批评已经不再适用如今公认评价是D3D和OpenGL在功能、速度和易用性上基本等价但这无法解释为什么游戏开发商倒向D3D不少人说是游戏开发以前是用DirectDraw转到同风格D3D比较容易但两者相似处也太少了无论如何从2D转到3D都是要从新学习套新体系而且D3D每个版本都区别如何说也比转到OpenGL代价大难道开发商都被微软MindControl了?

这里我们必须先跳出技术圈圈对商业游戏开发来讲利润是必须饿着肚子是没法谈技术和创新从众多偶像级开发商倒闭就知道这个产业竞争有多激烈个游戏最主要两个卖点就是图像和娱乐性而新图像特效比较容易使游戏很快脱颖而出而娱乐性更多地影响游戏寿命众所周知OpenGL在推出新特性上总是比D3D慢半拍但这半拍足以导致游戏落后熟悉OpenGL人会说OpenGL是允许显卡厂商添加扩展同等功能OpenGL扩展很快就会出现但是微软专制D3D更新各种支持其标准显卡就很快大量涌现;而最早面世OpenGL扩展都是各个显卡芯片厂商自己定义区别厂商支持都不然后厂商间协调为专利问题讨价还价最后达成多数厂商都能共同支持EXT或ARB扩展已经旷费很多时日了

第 2和CAD等软件Software区别游戏是面向大众消费者开发商需要游戏尽可能没有麻烦地在用户机器上运行而普通消费者不知道也不关心D3D、OpenGL是什么东西对游戏而言没有3D硬件加速是不能接受D3D游戏般会带DirectX安装包对于区别版本显卡驱动D3D都能提供硬件加速接口而对OpenGL相当比例普通用户系统上是没装OpenGLICDDriver(即OpenGL硬件加速驱动)其结果就是幻灯片式逐帧显示而且不少功能是后来显卡厂商更新驱动后加进去就是说即使用户系统上装了OpenGLICDDriver也可能只是1.2、1.3等旧版需要下载安装最新版驱动才能使用新特性估计有人会提GLSetup这个自动检测安装ICD工具但似乎这个项目几年前就停止了从功能上D3D是忠实反映硬件能力可以查询各项硬件指标超出硬件能力都是不支持(但顶点处理可以选择使用软件Software模式);而OpenGL在硬件不能支持时会自动由软件Software模拟这对CAD应用是很理想事实上我也很喜欢它这点但这对游戏是致命由于OpenGL各版本核心功能集合是强制支持而硬件未必支持所以硬件不支持部分或支持但超出硬件处理范围部分是由软件Software模拟所以支持OpenGL2.0ICD并不意味者全部功能都是硬件加速想知道硬件能支持到什么程度还是要用DXCapsViewer看

第 3商业项目必须考虑成本和时效性软件Software项目中人力成本往往是最大部分而按时交工又是开发组最大压力很多项目都会购买个现成引擎来降低成本和提高时效而独立开发引擎时就要选择效率最高开发平台对CAD应用来说它们并不需要显卡各种新特性它们只是用OpenGL来画线框图而华丽渲染效果是离线高级软件Software渲染引擎完成所以OpenGL1.1时代东西在多数情况下是足足够用而游戏要用到大量新特性如EffectFramework、BumpMapping、HDR、TextureAtlas等很多是需要将数据进行预处理而OpenGL只是图形输出接口其他工作都必须自己来做当然也可以找现成不过会有许可协议、区别风格代码集成、以及可能授权费等问题毕竟这是商业应用而D3D提供了D3DX库包含了从基础数学库(支持MMX、SSE、3DNow)到模型显示各种辅助例程极大地节省了开发时间在D3D和OpenGL征战中D3DX为D3D赢得不少支持者 [Page]

所以技术原因在两者选择上并没有多大影响似乎也可以证明为什么商业开发多用D3D业余开发多用OpenGL但也有不少主流商业引擎是同时支持D3D和OpenGL不过在Windows平台上缺省都是用D3D在Mac上只能是OpenGL在PS3上是OpenGLES在XBox上是特殊版本D3DMac上OpenGL支持比Windows要好不用担心它会fallback到软件Software模拟1.1OpenGLES是精简纯硬件加速移动设备版本而且是主要为移动设备上游戏设计所以对游戏来说个人觉得它比OpenGL更有前途
Tags: 

延伸阅读

最新评论

发表评论