关于 c#:laptop 双显卡 – 如何以编程方式检测和/或选择使用哪一个 | 珊瑚贝

laptop dual video cards – how to programatically detect and/or choose which one is used


我们正在开发使用 DirectX 在 Windows 7 和更高版本的机器上进行 3D 渲染的软件,64 位 C#/.NET 代码。

我们观察到,我们正在测试的一些较新的戴尔笔记本电脑具有双显卡。他们有 Intel HD 4600 集成显卡,也有更快的 NVIDIA Quadro 卡(例如)。

默认情况下,DirectX 应用程序使用 Intel 显卡。这样做是为了保持电池寿命。但是性能明显比NVIDIA卡差。

使用 NVIDIA 控制面板,用户可以控制默认使用哪一个。一旦用户将其切换为使用 NVIDIA 卡,性能就会大幅提升。

所以,我的问题是….有什么方法可以在代码中检测此设置和/或为我们的应用程序修改它(在安装和/或启动时)?我们能否检测到我们的应用程序正在使用英特尔卡,如果它是这些双卡场景之一,提示用户并可能(如果他们要求)更改他们的设置?

目前我们必须引导用户在 NVIDIA 控制面板中手动进行更改。

其他人有任何处理此问题的经验并对如何进行操作有任何建议吗?


您可以使用 C# DLL Interop 访问作为 GPU 部署工具包 (GDK) 一部分的 NVML(NVidia 管理库)的功能。 NVML 包括以下用于枚举和选择 GPU 设备的函数:

1
2
3
4
5
nvmlInit()
nvmlDeviceGetPciInfo()
nvmlDeviceGetCount()
nvmlDeviceGetHandleByIndex()
nvmlDeviceGetHandleByPciBusId()


nvmlDeviceSetPersistenceMode().

但是,许多 NVML 功能需要管理员访问权限并重新启动才能更改设置。因此,只有在您的用户对此感到满意(可能在初始安装期间)时,这些才是可行的。

更好的选择是枚举 Direct3D 设备并选择最合适的设备:使用 DirectX11 枚举和使用 DirectX9 枚举。

  • 感谢您的回复和建议。我会研究这些选项。
  • NVidia 控制面板允许用户在显卡之间进行选择(即 Intel 与 NVidia)。无需重新启动。进行更改后,它将在应用程序的下一次启动时生效。所以我想知道这是否与您发布的功能所提供的不同。


答案是你不能,至少有一些例外。
具有双显卡的笔记本电脑通常附带一个软件,可以手动或自动切换您当前使用的显卡。还有其他的可以自动检测软件应用程序对更大资源的需求,从而自动切换到 nvidia 卡。

但是,有一些解决方法,请参阅此线程。此外,我建议您手动将所有笔记本电脑的默认显卡设置为 nvidia,以消除此问题。

  • 自动选择通常只影响默认适配器是什么。您仍然可以使用@axon 答案中的链接手动枚举和选择特定适配器。
  • @nirvana8510 我们不能在笔记本电脑上手动设置显卡,它们不是我们的笔记本电脑。这些是客户机器。我们可以告诉客户他们需要进行此选择,但我正在寻找的是一种程序化方法来检测/更改应用程序的设置。


来源:https://www.codenong.com/29504891/

微信公众号
手机浏览(小程序)

Warning: get_headers(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(): Failed to enable crypto in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(https://static.shanhubei.com/qrcode/qrcode_viewid_9124.jpg): failed to open stream: operation failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57
0
分享到:
没有账号? 忘记密码?