18

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

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

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

4

2 回答 2

31

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

为 NVIDIA 启用专用显卡

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

为 AMD Radeon 启用专用显卡

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

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

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

于 2016-08-19T20:23:42.457 回答
3

它是否使用 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。它们绝对值得研究。

于 2013-05-29T20:46:54.187 回答