Получить статус Vsync на GPU C # - PullRequest
0 голосов
/ 05 марта 2019

Я занимаюсь разработкой базового приложения .net, в котором мне нужно получить как можно больше информации о системе.Мне уже удалось извлечь много, однако я изо всех сил пытаюсь выяснить, включен или нет VSync на графическом процессоре.Я пробовал NvApi Wrapper для графического процессора Nvidia, но не смог заставить его работать, так как он выдает исключение при попытке инициализировать его (не удалось загрузить nvapi64.dll).Оригинальный NvApi написан на C, и создание Wrapper только для этой конкретной вещи кажется слишком сложным.Я думаю, что должен быть более простой способ получить эту информацию.

Я также пытался получить значение, используя ManagementObjectSearcher, как показано ниже, но он не возвращает, активен ли vsync или нет:

var managementObjectSearcher = new ManagementObjectSearcher("select * from Win32_VideoController");
foreach (ManagementObject obj in managementObjectSearcher.Get())
{
    foreach(var prop in obj.Properties)
    {
        Console.WriteLine($"Name: {prop.Name} Value: {prop.Value}");
    }
}

1 Ответ

0 голосов
/ 05 марта 2019

Я мог бы получить необходимую информацию с помощью библиотеки OpenTK с открытым исходным кодом, которая предоставляет управляемую оболочку для OpenGL, для получения дополнительной информации см. здесь .

Сначала добавьте пакет NuGet, совместимый с.net core:

Install-Package OpenTK.NetStandard -Version 1.0.4 

Затем вы можете просто создать фиктивный класс с экземпляром GameWindow, и у вас будет доступ к информации, которую вы ищете (среди прочего):

public sealed class DummyInfoGameWindow : GameWindow
{
    private DummyInfoGameWindow() {}

    public static DummyInfoGameWindow InitAndGetInfo()
    {
        return new DummyInfoGameWindow();
    }
}

Затем просто вызовите статический метод из вашего кода:

static void Main(string[] args)
{
    var info = DummyInfoGameWindow.InitAndGetInfo();

    Console.WriteLine($"VSync enabled {info.VSync}");

    Console.Read();
}

Вывод:

VSync enabled On
...