对于非游戏而言,OpenGL仍比Direct3D好吗?

时间:2020-03-06 14:38:12  来源:igfitidea点击:

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

随着openGL 3.0的崩溃,openGl仍然是3D技术应用程序(cad / GIS)的自然选择吗?
是否有Direct3D的场景图库?

(当然,Direct3D仅是Windows。)

解决方案

Direct3D仅在Windows和XBox上可用。如果我们打算针对Unix或者Mac,除了Windows,OpenGL是一个不错的选择。

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

以我的经验,当前(2008年)Windows上的OpenGL驱动程序质量比Direct3D驱动程序质量差很多。如果情况无法合理地要求客户始终拥有最新的驱动程序,或者告诉他们将其显卡更改为具有更好OpenGL驱动程序的显卡,则OpenGL是一个非常糟糕的选择。在这种情况下,我将在Windows上使用D3D渲染器,在OS X / Linux上使用OpenGL渲染器(如果需要支持这些平台,那就是)。

有两个渲染器并不难。根据我的经验,解决驱动程序错误要比编写和支持渲染代码路径花费更多的时间。

当然,在某些(特定)情况下D3D只是不具备所需的功能,例如四路缓冲同步锁相输出;或者Windows XP上的几何体着色器支持。

简而言之:如果我们想在Windows上使用更好的驱动程序,请使用D3D。如果我们不太在乎驱动程序质量,或者需要OpenGL中提供但D3D中不提供的功能,请使用OpenGL。

并不是这样的答案,但是有趣的是要注意到AutoCAD的最新版本使我们可以在" 3dconfig"设置选项中使用OpenGL或者Direct3D驱动程序之间进行选择。从根本上讲,AutoCAD是仅Windows的应用程序,因此它们(最终)支持Direct3D是很有意义的。有关更多信息,请参见AutoDesk的本白皮书第15页。

也许我们应该尝试使用诸如OGRE之类的抽象层,使我们无需重写任何内容即可在DirectX和OpenGL之间切换?它还增加了很多功能,并且不是面向游戏的,而是非常通用的。

这不能直接回答问题(对不起),但是我是Direct3D的最早开发者之一,呵呵:

Are there scenegraph libraries for
  Direct3D?

Direct3D(nee Reality Lab)过去只是一个场景图形库:-)

可惜不再提供Direct3D保留模式...

D3D使我们支付Microsoft"战略税"。也就是说,D3D服务于两个主服务器。一种是为我们提供功能和性能。另一个是确保通常锁定到其他MS产品和Windows平台。这会给我们带来一些后果:

  • D3D应用程序只能在Windows(包括Xbox)上运行。也许我们现在认为这并不重要。但是,如果我们想在Mac,Linux,PS3,将来的控制台等上运行,那么我们可能会很高兴选择与平台无关的选择。
  • MS可以做出一些任意决定。下一版本的D3D是否只能在需要新硬件,昂贵且很多人不想升级到的操作系统上运行?他们会做出我们不同意的其他未来决定吗?
  • 从历史上看,OpenGL带领D3D快速公开了新的硬件功能。这是因为标准中提供了一种机制,供供应商添加自己的扩展,并将这些扩展最终折叠到主要规格中。 MS希望D3D成为它想要的东西,可以肯定有供应商的意见,但MS拥有否决权。我们可能很容易陷入Vista之类的情况,MS决定不向旧的DX公开新的硬件功能,而仅在Vista上提供新的DX。对于游戏开发者来说,这是一个令人头疼的问题。

现在,这就是为什么"专业应用程序"(CAD,动画,科学可视化,GIS等)偏爱OGL的原因。像这样的应用程序想要稳定多年,需要持续的维护和改进,想要在许多平台上运行。这与游戏相比,游戏通常只在一个平台上发布,但通常不会"维护"(可能不会是2.0,而是三年内对另一个OS的更新,因此不需要支持较旧的硬件等)。游戏需要最大的性能,并且只需要在较短的时间范围内和固定数量的平台上运行即可。如果他们仍然需要以Windows为目标并且D3D更快一些,那可能是正确的选择,因为负面的D3D后果不会像CAD应用程序那样伤害他们。

每个人都想相信的答案是肯定的,但真正的答案取决于它。

大约有50%的硬件将无法在任何合理的水平上运行OpenGL。要查看此示例,请阅读使用OpenGL的Google Sketchup常见问题解答

SketchUp's performance relies heavily the graphics card driver and it's ability to support OpenGL 1.5 or higher. Historically, people have seen problems with ATI Radeon cards and Intel based cards with SketchUp. We don't recommend using these graphics cards with SketchUp at this time. (Hardware ans software requirements for Google Sketchup

因此,如果我们正在编写CAD应用程序,并且不介意告诉客户"我们必须拥有兼容OpenGL的视频卡",那么答案是肯定的。

相反,如果要创建一个最终用户应用程序(例如Google Earth),那么可悲的答案是,如果要进入整个市场,就必须同时编写D3D和GL版本的应用程序。

对我来说,作为一家大型CAD公司的图形程序员,目前有三件事使OpenGL失去了优势,而对现有的CAD / DCC应用程序支持Direct3D(10/11):

  • 遗产。大多数CAD软件或者多或者少几乎都与OpenGL概念紧密相关。围绕D3D原理重写所有内容并非总是可管理的(从技术上来讲,并取决于公司向其投入资源的能力/意愿)。其次,如果出了点问题(功能性和/或者性能方面),它可能会带来负面影响,并且公司不会因为API和体系结构切换而冒着延迟主要版本的风险。
  • 人们。那些老派行业的人相当保守。他们更愿意花时间/金钱来处理有关IHV的所有OpenGL驱动程序问题,或者根本不建议使用特定IHV(例如Intel或者ATI)的图形。另外,我相信像波音,空中客车,TMC,宝马等汽车/航空航天行业的客户并不在乎只有Quadros工作站。就软件许可价格而言,硬件仍然很便宜。
  • 未来的趋势。随着Llano,Larrabee,Fermi等下一代处理器的问世以及随之而来的产品,绝对有必要投资研发预算,为这些未来的硬件(就图形以及非图形语言而言)如何编程和开发新的语言/ api /框架。图形任务)。 CAD行业周期巨大,如果没有真正的颠覆性技术,它也不会动摇。因此,对于大型CAD播放器,D3D可能会有点迟(当然,Autodesk除外,这是特例)。