Как запросить доступную видеопамять с помощью DirectX?


Ответы:


8

Согласно Game Coding Complete 3, есть несколько способов:

  • GetAvailableVidMem () в DX7 - обычно довольно хорошо. Не очень хорошо работает на картах с общей памятью.
  • WMI (интерфейс управления Windows) имеет результат, аналогичный приведенному выше.
  • DxDiag использует оба, чтобы дать лучший результат.
  • D3D9 имеет функцию GetAvailableTextureMemory (), но может использоваться только в Windows Vista / 7.

Ищите образец DX в SDK 08 марта или позже под названием «VideoMemory».


Образец DX для видеопамяти великолепен - должен был найти это, прежде чем спрашивать;)
Винсент Шейб

1
Учитывая, сколько компьютеров будет использовать общую память, я бы не рекомендовал версию DX7. И как версия D3D9 этого может быть доступна только на Vista +? D3D9 был там в XP ...
Bahbar

5

Для DX9EX в Vista и более поздних версиях:

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;

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


Не вызывая Release()на pDXGIDeviceпосле успешного вызова QueryInterface()приведет к утечке памяти.
Винз
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.