24

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

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

(当然 Direct3D 只是 windows。)

4

8 回答 8

35

D3D 让您支付微软的“战略税”。也就是说,D3D 服务于两个主人。一是为您提供功能和性能。二是保证对其他MS产品和Windows平台的普遍锁定。这对您有一些后果:

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

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

  3. 从历史上看,OpenGL 一直引领 D3D 快速展示新的硬件功能。这是因为标准中有一种机制供供应商添加他们自己的扩展,并且这些扩展最终会被合并到主要规范中。D3D 是 MS 想要的任何东西,肯定有供应商的意见,但 MS 拥有否决权。您可能很容易陷入类似于 Vista 的情况,在这种情况下,MS 决定不向旧 DX 公开新的硬件功能,而只在 Vista 上提供新的 DX。这对于游戏开发者来说是一件相当头疼的事情。

现在,这就是为什么“专业应用程序”(CAD、动画、科学可视化、GIS 等)会青睐 OGL 的原因——像这样的应用程序想要稳定多年,需要持续维护和改进,并希望在许多平台上运行。这与游戏形成对比,游戏经常只在一个平台上发布,但通常不会“维护”(可能不会有 2.0,三年后另一个操作系统的更新,不需要支持旧硬件等)。游戏需要最大的性能,并且只需要在很短的时间窗口和固定数量的平台上运行。如果他们无论如何都需要以 Windows 为目标并且 D3D 速度更快,那可能是正确的选择,因为负面的 D3D 后果不会像 CAD 应用程序那样伤害他们,比如说。

于 2008-12-05T00:27:35.970 回答
21

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

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

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

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

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

于 2008-09-24T06:27:30.997 回答
14

也许您应该尝试一个抽象层,例如OGRE,它可以让您在 DirectX 和 OpenGL 之间切换而无需重写任何东西?它还添加了很多功能,并且不是面向游戏的,但非常通用。

于 2008-10-02T03:17:55.587 回答
4

这并不能直接回答您的问题(抱歉),但我是从事 Direct3D 工作的原始人之一,呵呵:

是否有 Direct3D 的场景库?

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

遗憾的是不再提供 Direct3D 保留模式......

于 2008-12-04T08:29:16.950 回答
3

Direct3D 仅在 Windows 和 XBox 上可用。如果您计划针对 Unix 或 Mac,除了 Windows,OpenGL 是一个不错的选择。

于 2008-09-24T01:19:45.213 回答
3

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

  1. 遗产。大多数 CAD 软件都或多或少地紧贴 OpenGL 概念。围绕 D3D 理念重写所有内容并不总是易于管理(从技术上讲,这取决于公司投入资源的能力/意愿)。

    其次,如果出现问题(功能方面和/或性能方面),它可能会产生负面影响,并且公司不会冒险因为 API 和架构切换而延迟主要版本。

  2. 人民。那些老男孩行业的人相当保守。他们更愿意花费金钱/时间来处理 IHV 处理他们可能遇到的所有 OpenGL 驱动程序问题,或者根本不建议使用来自特定 IHV(例如 Intel 或 ATI)的图形。

    另外,我相信波音、空中客车、TMC、宝马等汽车/航空航天行业的客户并不关心只有 Quadros 的工作站。就软件许可价格而言,硬件仍然很便宜。

  3. 未来趋势。随着 Llano、Larrabee、Fermi 等下一代处理器和随后的产品的出现,绝对值得投资研发预算来为这些未来硬件(在图形和非图形任务)。

    CAD 行业有巨大的周期,如果不是真正的颠覆性技术,它就不会移动。因此,对于大型 CAD 玩家来说,D3D 可能来得有点晚(当然 Autodesk 除外,这是一个特例)。

于 2009-11-20T02:26:00.727 回答
2

不是这样的答案,但有趣的是,最新版本的 AutoCAD 让您可以在“3dconfig”设置选项中选择使用 OpenGL 或 Direct3D 驱动程序。从根本上说,AutoCAD 是一个仅限 Windows 的应用程序,因此它们(最终)支持 Direct3D 是有意义的。有关详细信息,请参阅AutoDesk 白皮书的第 15 页。

于 2008-10-02T03:07:22.647 回答
2

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

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

SketchUp 的性能在很大程度上依赖于显卡驱动程序以及支持 OpenGL 1.5 或更高版本的能力。从历史上看,人们发现 ATI Radeon 卡和基于英特尔的 SketchUp 卡存在问题。我们目前不建议将这些显卡与 SketchUp 一起使用。( Google Sketchup 的硬件和软件要求

所以,如果您正在编写一个 CAD 应用程序并且您不介意告诉您的客户,“您必须有一个兼容 OpenGL 的视频卡”,那么答案是肯定的。

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

于 2009-09-01T05:35:00.740 回答