如何确定安装了哪个版本的Direct3D?

时间:2020-03-05 18:57:51  来源:igfitidea点击:

我们有一个需要使用Direct3D的应用程序。具体来说,它至少需要DirectX 9.0c版本4.09.0000.0904. 尽管所有较新的XP计算机上都应存在此文件,但较旧的XP计算机上可能未安装此文件。如何以编程方式(使用C ++)确定它是否已安装?我希望能够向用户提供一条信息消息,指出Direct3D将不可用。

解决方案

回答

根据DirectX 9.0 SDK(2004年夏季)文档,请参阅\ Samples \ Multimedia \ DXMisc \ GetDXVer上的GetDXVer SDK示例。

回答

调用DirectXSetupGetVersion:http://msdn.microsoft.com/zh-cn/library/microsoft.directx_sdk.directsetup.directxsetupgetversion

我们需要包含dsetup.h

这是该站点的示例代码:

DWORD dwVersion;
DWORD dwRevision;
if (DirectXSetupGetVersion(&dwVersion, &dwRevision))
{
    printf("DirectX version is %d.%d.%d.%d\n",
           HIWORD(dwVersion), LOWORD(dwVersion),
           HIWORD(dwRevision), LOWORD(dwRevision));
}

回答

通过Google的快速搜索,本文可以确定版本号在注册表中的位置,然后提供一个case语句,将内部版本号映射到我们更熟悉的版本号。

另一个快速的Google搜索提供了一个C ++示例,可以从注册表中读取内容。

享受...

回答

是的,请使用2009年3月DirectX SDK中DirectX安装示例中显示的机制。 (在示例浏览器的"系统"类别下查找。)

不要使用注册表!这些东西是无证的,不能保证能正常工作。

唯一受支持的方法是使用DirectSetup API,如DirectX安装示例所示。我还将在《 Direct3D图形管道》一书中的第24章"安装和设置"中介绍这些内容。我们可以通过上述URL免费下载该章节。