强迫机器使用专用显卡

Forcing Machine to Use Dedicated Graphics Card?

本文关键字:专用 显卡 机器      更新时间:2023-10-16

我是一个使用c++与SDL和OpenGL开发应用程序的团队的一员。

在笔记本电脑上,当应用程序运行时,专用显卡未被使用,并且GL上下文无法创建,因为集成显卡不支持我们想要的GL版本。

我有一种感觉,这个问题是有问题的笔记本电脑特有的,不是我们可以通过代码解决的。但是,如果有人知道是否有一个解决方案,那就太好了。

从c++中确保在Windows下使用专用显卡而不是芯片组可切换显卡的最简单方法是导出以下符号(MSVC示例代码):

启用NVIDIA专用显卡:

extern "C" 
{
  __declspec(dllexport) unsigned long NvOptimusEnablement = 0x00000001;
}

为AMD Radeon启用专用显卡:

extern "C"
{
  __declspec(dllexport) int AmdPowerXpressRequestHighPerformance = 1;
}

警告:如果用户已经为应用程序创建了使用集成芯片组的配置文件,那么这些将无法工作。

我不确定这是否会在Linux/MacOS下类似地工作(不太可能)。

是否使用NVidia专用显卡?据我所知,从集成到专用的自动切换过程是基于应用程序配置文件的。您的应用程序不在已知3D应用程序的驱动程序列表中,因此用户必须手动切换到专用GPU。

尝试将应用程序的可执行名称更改为驱动程序查找的名称。例如"doom3 .exe"。如果这有效,那么您就找到了问题所在。

如果这没有帮助,试着按照下面的说明让驱动程序将你的应用程序插入到它的3D应用程序列表中:

https://nvidia.custhelp.com/app/answers/detail/a_id/2615/~/how-do-i-customize-optimus-profiles-and-settings

但以上只是为了验证这是否确实是您的问题。对于这个问题的实际解决方案,您应该咨询图形驱动程序供应商(AMD和NVidia),了解将应用程序配置文件插入其列表的最佳方法。NVidia提供NVAPI, AMD提供ADL和AGS。