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


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


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 )


Ne pas appeler Release()à la pDXGIDevicesuite d' un appel réussi à QueryInterface()conduira à une fuite de mémoire.
Vinz
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.