Як запитувати доступну відеопам'ять за допомогою DirectX?


Відповіді:


8

Відповідно до кодування гри Game Complete 3, є кілька способів:

  • GetAvailableVidMem () DX7 - зазвичай досить непогано. Не дуже добре працює на картках із спільною пам'яттю.
  • WMI (інтерфейс управління Windows) має подібний результат до вищевказаного.
  • DxDiag використовує обидва, щоб досягти кращого результату.
  • D3D9 має функцію GetAvailableTextureMemory (), але її можна використовувати лише в Windows Vista / 7.

Шукайте зразок DX у березні 08 або пізнішого SDK під назвою "VideoMemory".


Зразок DX для відеопам'яті чудовий - слід було б це
зрозуміти

1
Враховуючи, скільки комп’ютерів буде використовувати спільну пам'ять, я б не рекомендував версію DX7. І як версія D3D9 може бути доступна лише для Vista +? D3D9 був там у XP ...
Bahbar

5

Для DX9EX у Vista та новіших версіях:

IDXGIDevice * pDXGIDevice;
hr = g_pd3dDevice->QueryInterface(__uuidof(IDXGIDevice), (void **)&pDXGIDevice);
IDXGIAdapter * pDXGIAdapter;
pDXGIDevice->GetAdapter(&pDXGIAdapter);
DXGI_ADAPTER_DESC adapterDesc;
pDXGIAdapter->GetDesc(&adapterDesc);
return adapterDesc.DedicatedVideoMemory;

(від http://msdn.microsoft.com/en-us/library/bb174526(v=VS.85).aspx )


Якщо не вдаватися Release()до дзвінка pDXGIDeviceпісля успішного дзвінка, QueryInterface()це призведе до витоку пам'яті.
Вінц
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.