OpenGL在非游戏领域仍然比Direct3D更好吗?

24

标准模型认为OpenGL适用于专业应用程序(CAD),而Direct3D适用于游戏。

随着OpenGL 3.0的失败,现在仍然是技术性3D应用程序(CAD/GIS)的自然选择吗?
是否有针对Direct3D的场景图库?

(当然,Direct3D只适用于Windows。)


2
这太主观了。像“最好的”和“自然选择”这样的词语和短语并没有帮助。你的问题包含多个主观性问题(比如“Linux桌面的年份?”),这也没有帮助。考虑重新表述问题,使其更具体。 - SCdF
1
好的,我会尝试。附注:Linux桌面是一个笑话。 - Martin Beckett
Tim Sweeney的文章链接很棒!http://arstechnica.com/articles/paedia/gpu-sweeney-interview.ars - bobobobo
8个回答

35

D3D需要支付微软的“策略税”。也就是说,D3D有两个主人。一个是为了给你提供功能和性能。另一个是确保锁定其他微软产品和Windows平台。这对你有一些影响:

  1. D3D应用程序只能在Windows上运行(包括Xbox)。也许你现在认为这不重要。但是如果将来想在Mac、Linux、PS3、未来的游戏机等平台上运行,你可能会很高兴选择跨平台的选择。

  2. 微软可以做出任意决定。下一个版本的D3D是否只能在需要新硬件、昂贵且许多人不想升级的操作系统上运行?他们会做出其他你不同意的未来决定吗?

  3. 历史上,OpenGL在快速公开新硬件特性方面领先于D3D。这是因为标准中有一种机制,可以让供应商添加自己的扩展,并将这些扩展最终纳入主规范中。D3D是微软想要的任何东西,当然还有供应商的意见,但微软有否决权。你可能很容易陷入像Vista一样的境地,微软决定不向旧的DX公开新的硬件特性,只在Vista上提供新的DX。这对游戏开发者造成了很大的困扰。

因此,“专业应用程序”(如CAD、动画、科学可视化、GIS等)之所以更喜欢OGL,是因为这些应用程序需要稳定运行多年,需要不断维护和改进,并在许多平台上运行。与此形成对比的是游戏,它们往往只存在于一个平台上,发布后通常不会进行“维护”(可能不会有2.0版本,在三年后更新到另一个操作系统上也没有必要,不需要支持旧硬件等)。游戏希望获得最大的性能,并且只需要在短时间内在固定数量的平台上运行。如果它们需要针对Windows进行目标设置,并且D3D稍微快一点,那么可能是正确的选择,因为D3D的负面影响不会像对于CAD应用程序那样伤害它们。


6
实际上,OpenGL并不像人们普遍认为的那样跨平台。PS3(或任何其他现有的游戏主机)?没有。未来的游戏主机呢?很可能也不行。手机/掌上游戏机呢?也不太行(OpenGL ES是可以使用的)。这就只剩下“类似于PC的平台”了。 - NeARAZ
我以为D3D只能在Windows平台上运行? - Jon Cage
11
实际上,一篇文章[http://is.gd/nbHm]说:“Playstation 3中使用的3D计算机图形API软件是基于OpenGL ES的LibGCM和PSGL。”我相信新的Android平台也使用了OpenGL ES,所以如果有什么区别,那么D3D显然不够便携。 - Jon Cage
你可以使用Wine(或其派生物,例如Cedega)在Linux和MacOS X上运行D3D。 - Filip Navara
2
反例:3ds max是一款“专业CAD应用程序”,与您提到的那些应用程序类似,自问世以来就仅在Windows上运行,并几乎完全使用D3D。(OGL视口渲染器已经很长时间没有更新了)。 - Alex Budovski
@JonCage 不,Xbox 360实际上也可以运行D3D。 - Felype

21

像往常一样,这取决于你的情况。

根据我的经验,目前(2008年)Windows上OpenGL驱动程序的质量要比Direct3D驱动程序的质量差得多。如果您的情况是无法合理地要求客户始终拥有最新的驱动程序,或者要求他们更换具有更好OpenGL驱动程序的显卡,那么OpenGL是一个相当糟糕的选择。在这种情况下,我会选择在Windows上使用D3D渲染器,在OS X / Linux上使用OpenGL渲染器(如果必须支持这些平台)。

拥有两个渲染器并不是那么困难;根据我的经验,解决驱动程序错误需要花费的时间要比编写和支持渲染代码路径所需的时间多得多

当然,也有一些(特定的)情况下,D3D确实没有所需的功能,例如四重缓冲锁定输出或Windows XP上的几何着色器支持。

因此,简而言之:如果您想在Windows上获得更好的驱动程序,请使用D3D。如果您不太关心驱动程序质量,或需要OpenGL中而非D3D中的功能,则使用OpenGL。


1
你如何评价驱动程序的质量?有什么例子吗? - Jon Cage
3
一组数据点:让数百万人使用你的产品。比较在使用GL和D3D时,驱动程序DLL崩溃提交数量。另一个数据点:为已知有问题的驱动程序功能编写解决方法。比较在GL和D3D上需要的解决方法数量。 - NeARAZ
3
@Jon:D3D有一个参考设备,GL没有。参考设备可以让您检查问题是应用程序还是IHV方面的。这是一个巨大的优势,因为您可以更早地检测到问题。 - elmattic

14
也许你应该尝试使用像OGRE这样的抽象层,它可以让你在不需要重写代码的情况下在DirectX和OpenGL之间进行切换。此外,它还增加了很多功能,而且并非仅限于游戏方面,相当通用。

4

这并不能直接回答你的问题(抱歉),但我是最初在Direct3D和hehe上工作的人之一:

是否有适用于Direct3D的场景图库?

Direct3D(原名Reality Lab)曾经只是一个场景图库 :-)

很遗憾,Direct3D保留模式不再被使用了...


我从来没有理解为什么保留模式会被放弃。它似乎是一件好事。 - Guge

3
作为一名大型CAD公司的图形程序员,我认为目前有三个原因使得现有的CAD/DCC应用程序仍然使用OpenGL而没有转向Direct3D(10/11):
1. 遗留问题。大多数CAD软件都与OpenGL概念紧密相关。围绕D3D哲学重新编写所有内容并不总是可行的(从技术角度来看,这取决于公司投入资源的能力和意愿)。其次,如果出现功能上或性能上的问题,公司将不会冒险因API和架构切换而延迟重大发布。
2. 人们的偏好。在这些老牌产业中,人们相当保守。他们更喜欢花费时间和金钱与IHV打交道,解决可能出现的所有OpenGL驱动程序问题,或者根本不建议使用特定IHV(例如Intel或ATI)的图形处理器。此外,我相信像波音、空客、TMC、BMW等汽车/航空航天工业客户并不在乎只有Quadros工作站。硬件价格仍然便宜,相对于软件许可价格。
3. 未来趋势。随着Llano、Larrabee、Fermi等未来处理器的推出以及随后的产品,值得投资研发预算来开发适用于这些未来硬件的新语言/API/框架(无论是图形任务还是非图形任务)。CAD行业有着巨大的周期,如果没有真正颠覆性的技术,它将不会前进。因此,对于大型CAD玩家来说,D3D可能来得有点晚(当然,Autodesk是一个特例)。

那基本上是我的想法,OpenGL的场景图是决定因素 - DX并没有太多可用的东西。 - Martin Beckett

3

Direct3D只能在Windows和XBox上使用。如果你计划同时面向Unix或Mac和Windows,那么OpenGL是一个不错的选择。


同样重要的是,如果您最终决定针对Unix和Mac目标,则应选择OpenGL以最小化需要支持它们的转换。 - Guvante
@Guvante:抱歉,不行。在这个行业中,最小化转换根本不是重点。它关乎的是图形驱动程序的可靠性/你花费在处理它们问题上的时间。 - elmattic

2
每个人都想要相信的答案是“是”,但真正的答案是,要看情况。
大约有50%的硬件不能以任何合理的水平运行OpenGL。如果想看一个例子,请阅读使用OpenGL的Google Sketchup的FAQ。
SketchUp的性能在很大程度上依赖于显卡驱动程序及其支持OpenGL 1.5或更高版本的能力。历史上,人们在使用SketchUp时遇到了ATI Radeon显卡和基于Intel的显卡问题。我们目前不建议使用这些显卡与SketchUp一起使用。(来自Google Sketchup的硬件和软件要求
所以,如果你正在编写CAD应用程序,并且不介意告诉你的客户,“你必须拥有符合OpenGL标准的显卡”,那么答案是肯定的。
如果你创建的是最终用户应用程序(例如Google Earth),那么令人沮丧的答案是,如果你想覆盖整个市场,你将不得不编写D3D和GL版本的应用程序。

1
是的,我曾经遇到过ATi显卡的问题,我们建议客户尽可能选择Nvidia。Intel嵌入式视频芯片组正在变得更好,它们缺乏性能,但没有那么可怕的驱动程序错误。不幸的是,这不仅仅是编写两个输出渲染器,而是整个围绕OpenGL发展起来的场景图架构。好的一面是,iPhone/智能手机对OpenGL有很大的推动作用 - 如果您可以接受OpenGL-ES的限制。 - Martin Beckett

2

虽然这不是一个确切的答案,但最新版本的AutoCAD提供了在“3dconfig”设置选项中选择使用OpenGL或Direct3D驱动程序的选择。从根本上讲,AutoCAD是仅适用于Windows的应用程序,因此支持Direct3D对他们来说是有意义的(终于)。有关更多信息,请参见 这个来自AutoDesk的白皮书第15页


6
有趣的文章,特别是它声称OpenGL兼容的显卡起价为500美元,我怀疑这可能是由Redmond的广告部门撰写的。 - Martin Beckett
1
他们可能指的是“工作站认证”的OGL显卡,因为这些显卡往往更加昂贵。 - Donnie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接