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


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”.


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 )


Niestawienie Release()się na pDXGIDevicepo udanej wywołanie QueryInterface()doprowadzi do wycieku pamięci.
Vinz,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.