Directx获取游戏使用的VRAM

Directx get VRAM used by game

本文关键字:VRAM 获取 游戏 Directx      更新时间:2023-10-16

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

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

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

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

#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