首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >笔记本电脑双显卡-如何以编程方式检测和/或选择使用哪种显卡

笔记本电脑双显卡-如何以编程方式检测和/或选择使用哪种显卡
EN

Stack Overflow用户
提问于 2015-04-08 10:32:17
回答 2查看 1.5K关注 0票数 1

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

我们观察到,我们正在测试的许多较新的戴尔笔记本电脑都有双显卡。它们具有英特尔高清4600集成显卡,并且还具有速度更快的NVIDIA Quadro显卡(例如)。

默认情况下,DirectX应用程序使用开箱即用的英特尔图形。这样做大概是为了延长电池寿命。但性能明显比NVIDIA卡差。

使用NVIDIA控制面板,用户可以控制默认情况下使用哪一个。一旦用户切换到使用NVIDIA卡,性能就会有很大的提高。

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

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

还有没有人有处理这个问题的经验,并对如何处理有任何建议?

EN

回答 2

Stack Overflow用户

发布于 2015-04-08 11:39:44

可以使用C# DLL Interop访问NVML (NVidia Management Libraries)的函数,这些函数是GPU Deployment Kit (GDK)的一部分。NVML包括以下用于枚举和选择GPU设备的函数:

代码语言:javascript
复制
nvmlInit()
nvmlDeviceGetPciInfo()
nvmlDeviceGetCount()
nvmlDeviceGetHandleByIndex()
nvmlDeviceGetHandleByPciBusId()

nvmlDeviceSetPersistenceMode()

尽管如此,许多功能都需要管理员访问权限并重新启动才能更改设置。因此,只有在用户同意的情况下(可能是在初始安装期间),这些才是可行的。

更好的选择是枚举Direct3D设备并选择最合适的一个:Enumerating with DirectX11Enumerating with DirectX9

票数 2
EN

Stack Overflow用户

发布于 2015-04-08 10:47:09

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29504891

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档