1

我试图强制我的应用程序使用主 gpu。现在它会自动占用 CPU 上的那个。我用 DirectX9 和 OpenGL 都试过了。

当我调用 GetAdapterCount() 函数时,DirectX 仅返回 1 个适配器。当我调用 glGetString( GL_RENDERER ) 时,OpenGL 也只返回 1 个适配器。

有没有办法确保它使用正确的 GPU?

4

2 回答 2

2

我在我的 Nvidia Optimus + SandyBridge CPU 笔记本电脑上遇到了这个问题。每个人(DX、GL)都只返回了一个适配器,它给了我英特尔 GPU。

我通过更新 Nvidia 驱动程序解决了这个问题。安装最新版本的 DirectX 后,正确报告了两个适配器,并且基于 vendord id(Intel vs Nvidia),我可以选择在我的应用程序中使用哪个 GPU。

或者,您可以转到 Nvidia 控制面板,为您的可执行文件创建配置文件 - 并将其设置为始终使用 Nvidia GPU。当然,如果您将可执行文件提供给其他人以在他们的系统上运行带有错误驱动程序的系统,这当然不会解决同样的问题。

另一种选择是将您的可执行文件重命名为流行的游戏可执行文件名称。像 rage.exe 或 bf3.exe。这是因为 Nvidia 控制面板有很多带有流行游戏 exe 名称的预定义配置文件,并且它们都设置为使用 Nvidia GPU 而不是 Intel GPU。

于 2012-05-03T00:03:58.817 回答
0

这是复杂的并且依赖于硬件。您在使用混合显卡的笔记本电脑吗?如果是这样,通常会设置驱动程序为您提供用于 OpenGL 上下文的“主”GPU(回退到用于桌面渲染的集成显卡)。如果是台式机,通常两个 GPU 会驱动物理上不同的显示器输出。您是否将显示器插入独立显卡。

于 2012-05-02T23:58:29.267 回答