2014-11-24 76 views
0

我需要获取安装在我的机器上的DirectX版本信息(主版本和次版本信息)。我尝试使用DirectXSetupGetVersion API,但这回4.09.00.0904我的机器,其安装与DirectX 11这个值根据以下维基连结是错误的:http://en.wikipedia.org/wiki/DirectX。任何人都可以帮助我找到DirectX的确切版本信息。DirectX版本信息

问候, Midhun

回答

0

你应该解释为什么想知道 “DirectX版本”。

除非你正在处理的古老版本的Windows(即视窗9x/ME),才知道什么是DirectX提供基于操作系统版本的主要途径。这是最好的,因为“你必须这么高,才能乘坐这种骑行”的风格检查。我介绍了如何在this blog post中执行此操作,这应该在安装程序中完成,而不是由应用程序完成。

支持Direct3D 11那里,如果你想支持Windows Vista的一些复杂性在这里。这是非常详细由Direct3D 11 Deployment for Game Developers文章和Direct3D 11 Install Helper样本覆盖。

一旦应用程序启动,以确定是否一个特定版本是最好的方法是尝试创建设备和/或的QueryInterface版本。对于Direct3D 11最低版本的应用程序,我在Anatomy of Direct3D 11 Create Device中报道过。

如果你担心没有的Direct3D 11 - 就像在Windows XP,因为你已经设置你的“你必须是此高骑这搭”检查low--,你会使用显式的,而不是隐加载以获取创建该Direct3D 11设备的入口点。

static PFN_D3D11_CREATE_DEVICE s_DynamicD3D11CreateDevice = nullptr; 

if (!s_DynamicD3D11CreateDevice) 
{    
    HMODULE hModD3D11 = LoadLibrary(L"d3d11.dll"); 
    if (!hModD3D11) 
     // error 

    s_DynamicD3D11CreateDevice = reinterpret_cast<PFN_D3D11_CREATE_DEVICE>(GetProcAddress(hModD3D11, "D3D11CreateDevice")); 
    if (!s_DynamicD3D11CreateDevice) 
     // error, no Direct3D 11 present on the system 
} 

HRESULT hr = s_DynamicD3D11CreateDevice(...); 
if (FAILED(hr)) 
    // error 

其他的事情要记住的是,“DirectX版本”已经在所有绝对无关什么DirectX最终用户运行时(又名DirectSetup,DXSETUP,DXWSETUP)在Windows上实际执行从Windows XP Service Pack 2开始。请参阅No So Direct Setup。如果您需要检查D3DX,XAudio2.7,XACT,XInput 1.3,Managed DirectX 1.1等,您必须明确加载正确的DLL。