强制机器使用专用图形卡?

Con*_*lis 12 c++ opengl graphics sdl

我是使用C++与SDL和OpenGL开发应用程序的团队的一员.

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

我有一种感觉,这个问题是针对有问题的笔记本电脑而不是我们可以通过代码解决的问题.但是,如果有人知道是否有一个很好的解决方案.

Chr*_*bek 21

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

为NVIDIA启用专用图形:

extern "C" 
{
  __declspec(dllexport) unsigned long NvOptimusEnablement = 0x00000001;
}
Run Code Online (Sandbox Code Playgroud)

为AMD Radeon启用专用图形:

extern "C"
{
  __declspec(dllexport) int AmdPowerXpressRequestHighPerformance = 1;
}
Run Code Online (Sandbox Code Playgroud)

警告:如果用户为应用程序创建了一个使用集成芯片组的配置文件,那么这些将无效.

我不确定这在Linux/MacOS下是否会起作用(不太可能).


Nik*_* C. 3

它使用 NVidia 专用显卡吗?AFAIK,从集成自动切换到专用的过程是基于应用程序配置文件的。您的应用程序不在驱动程序的已知 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提供ADLAGS。它们绝对值得研究。

  • 目的是防止最终用户必须将应用程序添加到使用专用显卡的应用程序列表中。这种情况也可能发生在非 nvidia 设备上。我会看一下您发送的链接。ATI卡有类似的解决方案吗? (2认同)