¿Cómo consulto la memoria de video disponible usando DirectX?

Respuestas:

8

Según Game Coding Complete 3, hay algunas formas:

  • GetAvailableVidMem () de DX7: generalmente bastante bueno. No funciona demasiado bien en tarjetas con memoria compartida.
  • WMI (interfaz de administración de Windows) tiene un resultado similar al anterior.
  • DxDiag usa ambos para dar un mejor resultado.
  • D3D9 tiene una función GetAvailableTextureMemory (), pero solo se puede usar en Windows Vista / 7.

Busque una muestra de DX en marzo de 2008 o posterior SDK llamado 'VideoMemory'.

El pato comunista
fuente
La muestra de DX para la memoria de video es excelente, debería haberlo encontrado antes de preguntar;)
Vincent Scheib,
1
Considerando cuántas computadoras usarán la memoria compartida, no recomendaría la versión de DX7. ¿Y cómo puede la versión D3D9 de esto solo estar disponible en Vista +? D3D9 estaba allí en XP ...
Bahbar
5

Para DX9EX en Vista y 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;

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

Vincent Scheib
fuente
No llamar Release()en pDXGIDevicedespués de una llamada exitosa a QueryInterface()conducirá a una pérdida de memoria.
Vinz