标准模型是OpenGL用于专业应用程序(CAD),Direct3D用于游戏.
随着openGL 3.0的崩溃,openGl仍然是技术3D应用程序(cad/GIS)的自然选择吗?
是否有Direct3D的场景图库?
(当然Direct3D只是windows.)
D3D让您支付微软的"战略税".也就是说,D3D服务于两个主人.一个是为您提供功能和性能.另一种方法是确保一般地锁定其他MS产品和Windows平台.这对您有一些影响:
除了Windows(包括Xbox)之外,D3D应用程序不会运行任何东西.也许你现在认为这不重要.但是,如果您希望在Mac,Linux,PS3,未来游戏机等上运行,您可能会很高兴您选择了与平台无关的选择.
MS可以做出一些武断的决定.下一版D3D是否只能在需要新硬件的操作系统上运行,价格昂贵,而且很多人不想升级到?他们会做出你不同意的其他未来决定吗?
从历史上看,OpenGL已经引领D3D快速曝光新的硬件功能.这是因为标准中有一种机制可供供应商添加自己的扩展,并且这些扩展最终可以折叠到主要规范中.D3D是MS想要的,有来自供应商的输入,但MS获得否决权.你可能很容易陷入像Vista这样的情况,MS决定不向新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.
也许你应该尝试一个抽象层,比如OGRE,它允许你在DirectX和OpenGL之间切换,而不必重写任何东西?它还增加了许多功能,并且不是面向游戏的,而是非常通用的.