Directx 获取游戏使用的 VRAM

Directx get VRAM used by game

我正在尝试获取我的游戏当前使用的 VRAM 总量。我想在我的调试信息中显示这个。

当我使用 Visual Studio Graphics Analyzer 时,我想到了一个主意。 我想我可以通过添加 Graphics Object Table.

中每个图形对象的大小来获得使用的 VRAM 数量

不幸的是,我不知道如何获取这些对象中的每一个。有没有简单的方法来获得这些?

我实际上找到了一种更简单的方法:

#include <dxgi1_4.h>

...

IDXGIFactory4* pFactory;
CreateDXGIFactory1(__uuidof(IDXGIFactory4), (void**)&pFactory);

IDXGIAdapter3* adapter;
pFactory->EnumAdapters(0, reinterpret_cast<IDXGIAdapter**>(&adapter));

DXGI_QUERY_VIDEO_MEMORY_INFO videoMemoryInfo;
adapter->QueryVideoMemoryInfo(0, DXGI_MEMORY_SEGMENT_GROUP_LOCAL, &videoMemoryInfo);

size_t usedVRAM = videoMemoryInfo.CurrentUsage / 1024 / 1024;

这从默认 (ID 0) 适配器获取当前使用的 VRAM 并将其转换为兆字节。

注意:这确实需要使用 windows 10 SDK