Comment interroger la mémoire vidéo disponible à l'aide de DirectX?

16

Comment interrogez-vous la quantité de VRAM disponible lors de l'utilisation de DirectX?

Vincent Scheib
la source

Réponses:

8

Selon Game Coding Complete 3, il existe plusieurs façons:

  • GetAvailableVidMem () de DX7 - généralement assez bon. Ne fonctionne pas trop bien sur les cartes à mémoire partagée.
  • WMI (Windows Management Interface) a un résultat similaire au précédent.
  • DxDiag utilise les deux pour donner un meilleur résultat.
  • Le D3D9 possède une fonction GetAvailableTextureMemory (), mais ne peut être utilisé que sous Windows Vista / 7.

Recherchez un exemple DX en mars 08 ou ultérieur SDK appelé «VideoMemory».

Le canard communiste
la source
L'échantillon DX pour la mémoire vidéo est génial - aurait dû trouver cela avant de demander;)
Vincent Scheib
1
Compte tenu du nombre d'ordinateurs qui utiliseront la mémoire partagée, je ne recommanderais pas la version de DX7. Et comment la version D3D9 peut-elle être uniquement disponible sur Vista +? D3D9 était là dans XP ...
Bahbar
5

Pour DX9EX sur Vista et versions ultérieures:

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;

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

Vincent Scheib
la source
Ne pas appeler Release()à la pDXGIDevicesuite d' un appel réussi à QueryInterface()conduira à une fuite de mémoire.
Vinz