Como consultar a memória de vídeo disponível usando o DirectX?

16

Como você consulta a quantidade de VRAM disponível ao usar o DirectX?

Vincent Scheib
fonte

Respostas:

8

De acordo com a Game Coding Complete 3, existem algumas maneiras:

  • GetAvailableVidMem () do DX7 - geralmente muito bom. Não funciona muito bem em cartões com memória compartilhada.
  • O WMI (interface de gerenciamento do Windows) tem um resultado semelhante ao acima.
  • O DxDiag usa os dois para obter um melhor resultado.
  • O D3D9 possui uma função GetAvailableTextureMemory (), mas só pode ser usada no Windows Vista / 7.

Procure um exemplo de DX em 08 de março ou mais recente, o SDK chamado 'VideoMemory'.

O Pato Comunista
fonte
DX Amostra de memória de vídeo é grande - deveria ter encontrado que antes de pedir;)
Vincent Scheib
1
Considerando quantos computadores usarão memória compartilhada, eu não recomendaria a versão do DX7. E como a versão D3D9 disso pode estar disponível apenas no Vista +? D3D9 estava lá no XP ...
Bahbar
5

Para o DX9EX no Vista e posterior:

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;

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

Vincent Scheib
fonte
Não chamar Release()em pDXGIDeviceapós uma chamada bem-sucedida para QueryInterface()vai levar a um vazamento de memória.
Vinz