擷取圖形記憶體編號
建立圖形應用程式的軟體發展人員可以使用從 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_ADAPTER_DESC 資料結構取得圖形記憶體編號,該結構存在於 Dxgi.h 中,並包含在 DirectX 軟體發展工具組 (SDK) 中。
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 會管理圖形記憶體本身的虛擬化,並確保正確報告圖形記憶體的各個層面。 應用程式開發人員和軟體廠商應該利用 DirectX 第 10 版 API,在具有 Windows Vista 顯示器驅動程式的電腦上擷取一組精確的圖形記憶體值。