7

一些计算机安装了多个图形卡/芯片组,即使(例如笔记本电脑)它们没有多个显示器。

我在使用同时具有 Intel 和 Nvidia 图形硬件的笔记本电脑系统时遇到问题。众所周知,英特尔的驱动程序在 OpenGL 支持方面很糟糕,而且我的代码遇到了一个莫名其妙的渲染错误,因为在创建渲染上下文时,它似乎默认为英特尔系统,而不是 Nvidia 系统。

有没有办法在启动时避免这种情况?要说“轮询所有可用的图形驱动程序,尽可能避免使用 Intel 驱动程序,并使用可以工作的驱动程序为我构建一个 OpenGL 渲染上下文”之类的话?

4

1 回答 1

2

没有可移植的方式来完成您的要求,但本文档描述了如何在具有 NVIDIA Optimus 技术的系统上强制“高性能图形渲染”:

http://developer.download.nvidia.com/devzone/devcenter/gamegraphics/files/OptimusRenderingPolicies.pdf

具体来说,请参阅“全局变量 NvOptimusEnablement(驱动程序版本 302 中的新功能)”部分,其中说:

从 Release 302 驱动程序开始,应用程序开发人员可以在运行时指示 Optimus 驱动程序使用高性能图形来渲染任何应用程序——即使是那些没有现有应用程序配置文件的应用程序。他们可以通过导出一个名为 NvOptimusEnablement 的全局变量来做到这一点。Optimus 驱动程序查找导出的存在和值。此时只有 DWORD 的 LSB 很重要。值 0x00000001 表示应使用高性能图形执行渲染。值 0x00000000 表示应忽略此方法。

示例用法:

extern "C" {
    _declspec(dllexport) DWORD NvOptimusEnablement = 0x00000001;
}

另一种可能性是 WGL_nv_gpu_affinity 扩展,但您的 WGL 上下文需要支持它,我不确定它是否适用于混合 Intel/NVIDIA 系统:

http://developer.download.nvidia.com/opengl/specs/WGL_nv_gpu_affinity.txt
于 2013-07-10T06:00:37.260 回答