如何使用DirectX查询可用的视频内存?


Answers:


8

根据Game Coding Complete 3,有几种方法:

  • DX7的GetAvailableVidMem()-通常非常好。在具有共享内存的卡上效果不佳。
  • WMI(Windows管理界面)具有与上述相似的结果。
  • DxDiag两者都可以提供更好的结果。
  • D3D9具有GetAvailableTextureMemory()函数,但只能在Windows Vista / 7上使用。

在3月8日或之后的SDK中寻找名为“ VideoMemory”的DX示例。


视频存储器的DX样本很棒-应该在询问之前找到;)
Vincent Scheib 2010年

1
考虑到有多少台计算机将使用共享内存,我不推荐DX7的版本。以及如何仅在Vista +上提供D3D9版本?D3D9在XP中存在...
Bahbar 2010年

5

对于Vista和更高版本上的DX9EX:

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/zh-cn/library/bb174526(v=VS.85).aspx


不调用Release()pDXGIDevice后成功调用QueryInterface()会导致内存泄漏。
Vinz
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.