标准模型认为OpenGL适用于专业应用程序(CAD),而Direct3D适用于游戏。
随着OpenGL 3.0的失败,现在仍然是技术性3D应用程序(CAD/GIS)的自然选择吗?
是否有针对Direct3D的场景图库?
(当然,Direct3D只适用于Windows。)
标准模型认为OpenGL适用于专业应用程序(CAD),而Direct3D适用于游戏。
随着OpenGL 3.0的失败,现在仍然是技术性3D应用程序(CAD/GIS)的自然选择吗?
是否有针对Direct3D的场景图库?
(当然,Direct3D只适用于Windows。)
D3D需要支付微软的“策略税”。也就是说,D3D有两个主人。一个是为了给你提供功能和性能。另一个是确保锁定其他微软产品和Windows平台。这对你有一些影响:
D3D应用程序只能在Windows上运行(包括Xbox)。也许你现在认为这不重要。但是如果将来想在Mac、Linux、PS3、未来的游戏机等平台上运行,你可能会很高兴选择跨平台的选择。
微软可以做出任意决定。下一个版本的D3D是否只能在需要新硬件、昂贵且许多人不想升级的操作系统上运行?他们会做出其他你不同意的未来决定吗?
历史上,OpenGL在快速公开新硬件特性方面领先于D3D。这是因为标准中有一种机制,可以让供应商添加自己的扩展,并将这些扩展最终纳入主规范中。D3D是微软想要的任何东西,当然还有供应商的意见,但微软有否决权。你可能很容易陷入像Vista一样的境地,微软决定不向旧的DX公开新的硬件特性,只在Vista上提供新的DX。这对游戏开发者造成了很大的困扰。
因此,“专业应用程序”(如CAD、动画、科学可视化、GIS等)之所以更喜欢OGL,是因为这些应用程序需要稳定运行多年,需要不断维护和改进,并在许多平台上运行。与此形成对比的是游戏,它们往往只存在于一个平台上,发布后通常不会进行“维护”(可能不会有2.0版本,在三年后更新到另一个操作系统上也没有必要,不需要支持旧硬件等)。游戏希望获得最大的性能,并且只需要在短时间内在固定数量的平台上运行。如果它们需要针对Windows进行目标设置,并且D3D稍微快一点,那么可能是正确的选择,因为D3D的负面影响不会像对于CAD应用程序那样伤害它们。
像往常一样,这取决于你的情况。
根据我的经验,目前(2008年)Windows上OpenGL驱动程序的质量要比Direct3D驱动程序的质量差得多。如果您的情况是无法合理地要求客户始终拥有最新的驱动程序,或者要求他们更换具有更好OpenGL驱动程序的显卡,那么OpenGL是一个相当糟糕的选择。在这种情况下,我会选择在Windows上使用D3D渲染器,在OS X / Linux上使用OpenGL渲染器(如果必须支持这些平台)。
拥有两个渲染器并不是那么困难;根据我的经验,解决驱动程序错误需要花费的时间要比编写和支持渲染代码路径所需的时间多得多。
当然,也有一些(特定的)情况下,D3D确实没有所需的功能,例如四重缓冲锁定输出或Windows XP上的几何着色器支持。
因此,简而言之:如果您想在Windows上获得更好的驱动程序,请使用D3D。如果您不太关心驱动程序质量,或需要OpenGL中而非D3D中的功能,则使用OpenGL。
这并不能直接回答你的问题(抱歉),但我是最初在Direct3D和hehe上工作的人之一:
是否有适用于Direct3D的场景图库?
Direct3D(原名Reality Lab)曾经只是一个场景图库 :-)
很遗憾,Direct3D保留模式不再被使用了...
Direct3D只能在Windows和XBox上使用。如果你计划同时面向Unix或Mac和Windows,那么OpenGL是一个不错的选择。
虽然这不是一个确切的答案,但最新版本的AutoCAD提供了在“3dconfig”设置选项中选择使用OpenGL或Direct3D驱动程序的选择。从根本上讲,AutoCAD是仅适用于Windows的应用程序,因此支持Direct3D对他们来说是有意义的(终于)。有关更多信息,请参见 这个来自AutoDesk的白皮书第15页。