.net C#:使用SharpDX获取GPU使用情况

pdtvr36n  于 2023-06-25  发布在  .NET
关注(0)|答案(2)|浏览(303)

我目前正在尝试从GPU中查找实时/设置数据。这是一个程序正在WPF模板,使用C#.在搜索了近一个小时后,我想你们中的一些人可能会有我的问题的答案。
我特别关注的是找到一个GPU的使用情况,以及GPU的免费/可用的VRAM。我正在寻找DirectX/SharpDX,因为DirectX能够找到我正在寻找的特定数据。但是考虑到DirectX并不真正支持.net的当前版本,我正在考虑SharpDX作为一个可能的解决方案。
然而,我找不到任何例子,如何找到GPU使用或免费VRAM时使用SharpDX。任何答案/链接将不胜感激。谢谢!

q3qa4bjr

q3qa4bjr1#

尝试使用System.Management命名空间。下面是一个示例代码

using System.Management;    
ManagementObjectSearcher objSearch= new ManagementObjectSearcher("select * from Win32_VideoController");

foreach (ManagementObject share in objSearch.Get())
{   
    // Some logic...

    //if want to loop through properties
    foreach (PropertyData PC in share.Properties)
    {
         //some logic...
    }
}
bis0qfac

bis0qfac2#

在SharpDX.Direct3D12中,GPU内存使用情况可以通过

var factory = new Factory4();
var adapter = new Adapter4(factory.GetAdapter1(1).NativePointer);
var device = new Device(adapter, SharpDX.Direct3D.FeatureLevel.Level_11_0);
MessageBox.Show($"Dedicated Memory Usage: {adapter.QueryVideoMemoryInfo(0, MemorySegmentGroup.Local).CurrentUsage}");
MessageBox.Show($"Shared Memory Usage: {adapter.QueryVideoMemoryInfo(0, MemorySegmentGroup.NonLocal).CurrentUsage}");

GetAdapter(1)意味着获取第二个适配器,您可以更改该编号。玩得开心

相关问题