某些计算机安装了多个图形卡/芯片组,即使(例如笔记本电脑)没有多台显示器也是如此。
我在使用具有Intel和Nvidia图形硬件的笔记本电脑系统时遇到了问题。英特尔的驱动程序在OpenGL支持方面非常糟糕,我的代码遇到了一个无法解释的渲染错误,因为它在创建渲染上下文时似乎默认为Intel系统,而不是Nvidia系统。
有没有办法在启动时避免这种情况?要说“对所有可用的图形驱动程序进行轮询,尽可能避免使用英特尔驱动程序,并使用可以工作的驱动程序构建一个OpenGL渲染上下文”?
答案 0 :(得分:1)
没有可移植的方法可以满足您的要求,但本文档介绍了如何在采用NVIDIA Optimus技术的系统上强制使用“高性能图形渲染”:
http://developer.download.nvidia.com/devzone/devcenter/gamegraphics/files/OptimusRenderingPolicies.pdf
具体来说,请参阅“全局变量NvOptimusEnablement”(驱动程序中的新增内容)部分 发布302)“,其中说:
从Release 302驱动程序开始,应用程序开发人员可以 在运行时指示Optimus驱动程序以使用高性能 图形来呈现任何应用程序 - 甚至是那些应用程序 没有现有的应用程序配置文件他们可以做到这一点 导出名为NvOptimusEnablement的全局变量。擎天柱 driver查找导出的存在和值。只有LSB 在这个时候,DWORD很重要。值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