Retrieving Graphics Memory Numbers
创建图形程序的开发者可以从Vista开始调用DX10的API得到支持WDDM显卡驱动系统中精确的可用的显存大小。
下面显示了获得显存大小的步骤:
-
因为现存的精确大小仅在支持WDDM的显卡驱动的系统中有效,因此程序需要先调用如下接口确认该系统支持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之后,程序就能使用DX10的API来获得显存大小。程序从DXGI_ADAPTER_DESC结构中获得显存信息,这个结构存在于DX SDK的Dxgi.h中。
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;
因为Vista之后的桌面以及游戏的图形需求应用广泛,软件需要获得更精确的可用显存大小。WDDM管理着显存虚拟化同时保证了不同图形内存的精确报告。应用开发者和软件提供商需要在支持WDDM的显卡驱动的系统上利用DX10 API来获得更精确的显存信息。