我们有一个需要使用Direct3D的应用程序。 具体来说,它至少需要DirectX 9.0c版本4.09.0000.0904。 虽然这应该出现在所有较新的XP机器上,但它可能不会安装在较旧的XP机器上。 我如何以编程方式(使用C ++)确定它是否已安装? 我希望能够向用户提供Direct3D无法使用的信息消息。

===============>>#1 票数:5 已采纳

调用DirectXSetupGetVersion: http//msdn.microsoft.com/en-us/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));
}

===============>>#2 票数:0

是的,使用2009年3月版DirectX SDK中DirectX Install示例中显示的机制。 (在示例浏览器中查看“系统”类别。)

不要使用注册表! 那些东西没有证件,也不能保证有效。

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

===============>>#3 票数:0

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

===============>>#4 票数:0

快速谷歌搜索出现了这篇文章 ,它在注册表中标识了版本号的位置,然后提供了一个案例陈述,它将内部版本号映射到我们更熟悉的版本号。

另一个快速谷歌搜索在C ++中提供了一个从注册表中读取的示例。

请享用...

  ask by David Dibben translate from so

未解决问题?本站智能推荐:

1回复

Direct3D窗口打开至白屏

在源代码中,我正在使用我的程序打开一个显示白屏的窗口,并立即变得无响应。 请帮助我查找代码问题。 Windows.cpp DirectX.cpp我认为这是发生问题的地方
1回复

是否有将Direct3D与COM一起使用的参考?

我指的是,除Direct3D是COM接口外,所有用于“非托管” /桌面C ++目标应用程序的MSDN教程都没有使用甚至提到COM。 我是这个游戏的新手 ,并且通过大量搜索(包括为其他目标(例如RT)阅读其他MSDN文档),我确定我绝对应该使用COM帮助器。 我已经找到了COM智能指针(_
1回复

Direct3D C ++ API如何更新顶点缓冲区?

那么如何使用IASetVertexBuffers方法将顶点缓冲区中的更新值绑定到设备对象中呢? 在调用Draw()和Present()之前还会更改此缓冲区中的值吗? 还会根据缓冲区中的这些新值来更新图像吗?
3回复

在Direct3D应用程序中渲染格式化的文本

我需要渲染一些格式化的文本(颜色,不同的字体大小,下划线,粗体等),但是我不确定该怎么做。 D3DXFont只允许一次渲染单个字体/大小/粗细/颜色/等的文本,而我看不到“组合”对ID3DXFont :: DrawText的多次调用来执行此类操作的实用方法... 我环顾四周,似乎没有现成
1回复

使用Direct3D 9在硬件中将RGB表面转换为YUV

我有一个ARGB Direct3D9曲面,需要将其放大为相同尺寸的UYVY曲面。 两个表面都在系统内存中。 我该怎么做? UpdateSurface和StretchRect失败。 如果需要,我愿意使用纹理而不是表面。 这必须在GPU中完成,即使用硬件加速。
1回复

如何使用ComPtr中包含的Direct3D 11指针获取11.1接口?

我正在关注教程,并且我已经将通常的初始化转换为使用ComPtrs到此行: 这就是我所期望的直接模拟: 有很多编译器和智能感知警告(对我来说真的很神秘)。 它不喜欢演员,它不喜欢我如何使用QueryInterface()。 我该怎么办? 错误: 智能感知警告(
1回复

CreateTexture2D失败…(d3d)

我正在尝试使用STAGING用法创建D3D纹理2d。 总是失败,并显示错误:“参数不正确”(代码0x80070057)... 我不明白,除了暂无问题外,我还可以创建其他文件,但无法成功完成此操作...请在计算机飞过窗口之前帮助我...请... 这是有问题的代码: 在以下
2回复

Direct3D视窗

我想开始学习Direct3D,但是我无法完全专注于Direct3D,因为教程中99%的代码仅针对创建和维护窗口,而我什至不在乎。 我想知道是否有一种方法可以直接跳入Direct3D本身而无需担心Windows(考虑OpenGL的SDL级简单性)。 我已经阅读过那些曾经使用过SDL和D
4回复

为什么Direct3D仅可在Windows上使用?

什么是Direct3D? 这是一个API,不是吗? 它是由Windows还是由图形卡实现的? 如果图形卡实现了Direct3D API,为什么其他操作系统不能使用图形卡中的Direct3D资源? 如果Direct3D由Windows实现,则它必须使用图形卡资源,例如OpenGL或
2回复

食人魔和Allegro Direct3d设备9冲突

我一直在尝试编写一个使用Allegro 5来处理2D渲染和使用Ogre进行3D渲染的程序,但是我在初始化方面遇到了问题,我已经解决了大多数问题,这些问题是窗口的hInstance,但是现在的问题是Ogre::D3D9RenderWindow::setDevice()仅采用Ogre的类型,并且由I