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

时间:2013-05-29 20:38:39

标签: c++ opengl graphics sdl

我是使用带有SDL和OpenGL的C ++开发应用程序的团队的一员。

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

我觉得这个问题特定于有问题的笔记本电脑,而不是我们可以通过代码解决的问题。但是,如果有人知道是否有一个很好的解决方案。

2 个答案:

答案 0 :(得分:17)

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

Enable dedicated graphics for NVIDIA

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

Enable dedicated graphics for AMD Radeon

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

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

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

答案 1 :(得分:1)

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

尝试将应用程序的可执行文件名更改为驱动程序查找的内容。例如“Doom3.exe”。如果可行,那么你就找到了问题。

如果这没有帮助,请尝试按照此视频中的说明操作,了解如何让驱动程序在3D应用列表中插入您的应用:

http://www.frequency.com/video/how-to-whitelist-game-with-nvidias/24814032

但上述仅用于验证这是否确实是您的问题。有关此问题的实际解决方案,您应该与图形驱动程序供应商(AMD和NVidia)一起检查将应用程序的配置文件插入其列表的最佳方法。 NVidia提供NVAPI,AMD有ADLAGS。他们绝对值得研究。