我试图强制我的应用程序使用主 GPU。现在它会自动占用 CPU 上的一个。我在 DirectX9 和 OpenGL 上都试过了。
当我调用 GetAdapterCount() 函数时,DirectX 仅返回 1 个适配器。 当我调用 glGetString( GL_RENDERER ) 时,OpenGL 也只返回 1 个适配器。
有没有办法确保它使用正确的 GPU?
最佳答案
我在我的 Nvidia Optimus + SandyBridge CPU 笔记本电脑上遇到了这个问题。每个人(DX、GL)只返回了一个适配器,它给了我英特尔 GPU。
我通过更新 Nvidia 驱动程序解决了这个问题。安装最新版本后,DirectX 正确报告了两个适配器并基于供应商 ID(Intel 与 Nvidia),我可以选择在我的应用程序中使用哪个 GPU。
或者,您可以转到 Nvidia 控制面板,为您的可执行文件创建配置文件 - 并将其设置为始终使用 Nvidia GPU。当然,如果您将您的可执行文件提供给其他人以在他们的系统上使用错误的驱动程序运行,这当然不会解决同样的问题。
另一种选择是将您的可执行文件重命名为流行的游戏可执行文件名称。像 rage.exe 或 bf3.exe。这是可行的,因为 Nvidia 控制面板有很多带有流行游戏 exe 名称的预定义配置文件,并且它们都设置为使用 Nvidia GPU 而不是 Intel GPU。
关于c++ - 将渲染设备从 Sandy Bridge GPU 更改为主 GPU,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10423251/