Come posso interrogare la memoria video disponibile usando DirectX?


Risposte:


8

Secondo Game Coding Complete 3, ci sono alcuni modi:

  • GetAvailableVidMem () di DX7 - di solito abbastanza buono. Non funziona troppo bene su schede con memoria condivisa.
  • WMI (Windows Management Interface) ha un risultato simile al precedente.
  • DxDiag usa entrambi per ottenere un risultato migliore.
  • D3D9 ha una funzione GetAvailableTextureMemory (), ma può essere utilizzata solo su Windows Vista / 7.

Cerca un esempio DX in SDK dell'8 marzo o successivo chiamato "VideoMemory".


Il campione DX per la memoria video è fantastico - avrebbe dovuto scoprirlo prima di chiedere;)
Vincent Scheib,

1
Considerando quanti computer utilizzeranno la memoria condivisa, non consiglierei la versione di DX7. E come può la versione D3D9 di questo essere disponibile solo su Vista +? D3D9 era lì in XP ...
Bahbar,

5

Per DX9EX su Vista e versioni successive:

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;

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


Non chiamare Release()su pDXGIDevicedopo una chiamata riuscita al QueryInterface()porterà ad una perdita di memoria.
Vinz,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.