2014-11-24 160 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。