グラフィックス メモリの数の取得
グラフィックス アプリケーションを作成するソフトウェア開発者は、Windows Vista 以降の Microsoft DirectX バージョン 10 API を使用して、Windows ディスプレイ ドライバー モデル (WDDM) のディスプレイ ドライバーを実行しているコンピューター上のグラフィックス メモリ数の正確なセットを取得できます。 次の手順では、グラフィックス メモリ数を取得する方法を示します。
新しいグラフィックス メモリ レポートは、Windows ディスプレイ ドライバー モデル (WDDM) ディスプレイ ドライバーを実行しているコンピューターでのみ使用できるため、アプリケーションは最初に次の関数を呼び出してドライバー モデルを確認する必要があります。
HasWDDMDriver() { LPDIRECT3DCREATE9EX pD3D9Create9Ex = NULL; HMODULE hD3D9 = NULL; hD3D9 = LoadLibrary( L"d3d9.dll" ); if ( NULL == hD3D9 ) { return false; } // // Try to create a IDirect3D9Ex interface (also known as a DX9L // interface). // This interface can only be created if the driver is written // according to the Windows Display Driver Model (WDDM). // pD3D9Create9Ex = (LPDIRECT3DCREATE9EX) GetProcAddress ( hD3D9, "Direct3DCreate9Ex" ); return pD3D9Create9Ex != NULL; }
アプリケーションがディスプレイ ドライバー モデルが WDDM であると判断した後、アプリケーションは新しい DirectX バージョン 10 API を使用してグラフィックス メモリ数を取得できます。 アプリケーションは、Dxgi.h に存在し、DirectX ソフトウェア開発キット (SDK) に含まれている以下の DXGI_ADAPTER_DESC データ構造体からグラフィックス メモリ数を取得します。
typedef struct DXGI_ADAPTER_DESC { WCHAR Description[ 128 ]; UINT VendorId; UINT DeviceId; UINT SubSysId; UINT Revision; SIZE_T DedicatedVideoMemory; SIZE_T DedicatedSystemMemory; SIZE_T SharedSystemMemory; LUID AdapterLuid; } DXGI_ADAPTER_DESC;
Windows Vista 以降のデスクトップおよび DirectX ゲームではグラフィックスが広範に使用されているため、Windows Vista 以降で実行されるソフトウェアは、使用可能なグラフィックス メモリの量を正確に判断できる必要があります。 WDDM は、グラフィックス メモリ自体の仮想化を管理し、グラフィックス メモリのさまざまな側面の正確なレポートも保証します。 アプリケーション開発者とソフトウェア ベンダーは、Windows Vista ディスプレイ ドライバーを搭載したコンピューター上のグラフィックス メモリ値の正確なセットを取得するために DirectX バージョン 10 API を利用する必要があります。