将渲染设备从Sandy Bridge GPU更改为主GPU

时间:2012-05-02 23:45:42

标签: c++ opengl directx

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

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

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

2 个答案:

答案 0 :(得分:2)

我的Nvidia Optimus + SandyBridge CPU笔记本电脑出现了这个问题。 EVerybody(DX,GL)只返回一个适配器,它给了我Intel GPU。

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

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

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

答案 1 :(得分:0)

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