Jak zapytać o dostępną pamięć wideo za pomocą DirectX?

16

Jak zapytać o ilość dostępnej pamięci VRAM podczas korzystania z DirectX?

Vincent Scheib
źródło

Odpowiedzi:

8

Według Game Coding Complete 3 istnieje kilka sposobów:

  • GetAvailableVidMem () DX7 - zwykle całkiem niezła. Nie działa zbyt dobrze na kartach ze wspólną pamięcią.
  • WMI (Windows Management Interface) ma podobny wynik do powyższego.
  • DxDiag używa obu, aby uzyskać lepszy wynik.
  • D3D9 ma funkcję GetAvailableTextureMemory (), ale można jej używać tylko w systemie Windows Vista / 7.

Wyszukaj próbkę DX w pakiecie SDK 08 marca lub później o nazwie „VideoMemory”.

Kaczka komunistyczna
źródło
Próbka DX do pamięci wideo jest świetna - powinna była to odkryć przed pytaniem;)
Vincent Scheib
1
Biorąc pod uwagę, ile komputerów będzie używać pamięci współdzielonej, nie poleciłbym wersji DX7. I w jaki sposób wersja D3D9 może być dostępna tylko w systemie Vista +? D3D9 był tam w XP ...
Bahbar
5

W przypadku DX9EX w systemie Vista i nowszych wersjach:

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;

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

Vincent Scheib
źródło
Niestawienie Release()się na pDXGIDevicepo udanej wywołanie QueryInterface()doprowadzi do wycieku pamięci.
Vinz,