最低DirectX 9.0c版本以及如何检查它

时间:2010-07-15 11:30:09

标签: c++ windows directx ogre3d

我们的基于Windows C ++ Ogre的游戏即将完成。在我们公开发布之前,我们必须解决这个问题:

如果Ogre没有更新到最新的Dx9.0c版本,Ogre会在许多测试计算机上崩溃。所有这些计算机已经安装了9.0c,但这必须是旧的操作系统预安装的子版本,因此崩溃..?

第一个问题是:我如何确保用户拥有正确的9.0c版本,以便游戏不会在用户面前崩溃,而是显示“从{获取最新的9.0c版本”之类的消息{3}} ....“?

第二个问题是:在游戏安装过程中是否有标准的自动方法将用户的计算机更新到最新的9.0c版本?那将是最好的解决方案。

许多人提前感谢,

比尔

2 个答案:

答案 0 :(得分:4)

  

第一个问题是:如何确保用户拥有正确的9.0c版本,以便游戏不会在用户脸上崩溃,而是显示“从那里获取最新的9.0c版本”之类的消息......“?

最好的想法是从Game Installer静默更新/安装DirectX。连同其他所需的系统组件,如PhysX,vcredist等,静默,不要求“你想安装DirectX”(用户可能不知道他是否需要DirectX,如果它已经安装,没有会发生) 见DirectX Installation for Game Developers。另外,我建议您查看"Instalation and Maintenance of Games"

这是因为(我相信)当你制作游戏时,你应该假设计算机用户是完全白痴。即如果你给出指示,期望用户搞砸,损坏系统并责备你。相比那个无声的DirectX安装几乎是万无一失的。此外,它更方便 - 用户无需寻找DirectX下载,并且可以在安装后立即播放。

  

第二个问题是:在游戏安装过程中是否有标准的自动方法将用户的计算机更新到最新的9.0c版本?那将是最好的解决方案。

AFAIK,DXSDK包括DirectX可再发行组件,AFAIK您应该将这些可再发行组件包含在您的产品中。

答案 1 :(得分:0)

我有同样的问题,但由于Ogre支持Direct3D和OpenGL开箱即用,我只是尝试了loadx directx lib(d3dx9_42.dll)的LoadLibrary,如果失败,则跳过加载directx渲染系统。 (我从plugins.cfg文件中移出了rendersystem插件的加载,以便在初始化时手动执行)。在这种情况下,我的应用程序继续在OpenGL上运行。

当然,如果您有像hlsl着色器之类的特定于Directx的代码或类似的东西,这不起作用,在这种情况下,只需包含redist。只需与微软和EULA核实,它们似乎无法默默运行redist,因为他们希望用户首先接受协议。因此,为了100%正确,您需要以非静默方式运行redist,或者在安装程序中包含具有自己许可证的MS EULa。

(人们似乎已经做了另外一件事并且逃脱了它,意味着他们的应用程序运行没有任何问题,只是包含他们的项目所需的directx dll(如d3dx9_42.dll或其他)。只是简单地复制它们到bin目录,这样渲染系统总能找到它们。这似乎不是一个很好的方法,但是嘿,如果它有效,为什么不呢?)