Directx获得游戏使用的VRAM

时间:2016-02-20 18:30:33

标签: c++ directx

我试图获取我的游戏目前正在使用的VRAM总量。我想在我的调试信息中显示它。

当我使用Visual Studio Graphics Analyzer时,我有了一个主意。 我想我可以通过添加每个图形对象的大小来获得所使用的VRAM数量,如Graphics Object Table中所示。

不幸的是我不知道如何获得每个对象。有没有一种简单的方法可以获得这些?

1 个答案:

答案 0 :(得分:3)

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

#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