我是一个团队的一员,使用C++与SDL和OpenGL开发应用程序。在笔记本电脑上运行应用程序时,不使用专用图形卡,并且无法创建GL上下文,因为集成图形卡不支持我们想要的GL版本。我有一种感觉,这个问题是特定的笔记本电脑的问题,而不是我们可以解决的东西通过代码。但是,如果有人知道,如果有一个解决方案,这将是伟大的。
klr1opcd1#
从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下类似地工作(不太可能)。
bxpogfeg2#
它是否使用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的ADL和AGS。他们绝对值得研究。
2条答案
按热度按时间klr1opcd1#
从C++确保在Windows下使用专用显卡而不是芯片组可切换显卡的最简单方法是导出以下符号(MSVC示例代码):
Enable dedicated graphics for NVIDIA:
Enable dedicated graphics for AMD Radeon:
警告:如果用户已经为应用程序创建了使用集成芯片组的配置文件,那么这些将不起作用。
我不确定这是否会在Linux/MacOS下类似地工作(不太可能)。
bxpogfeg2#
它是否使用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的ADL和AGS。他们绝对值得研究。