如何使用特定的图形驱动程序创建OpenGL上下文?

时间:2013-04-22 19:14:00

标签: windows winapi opengl

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

我在使用具有Intel和Nvidia图形硬件的笔记本电脑系统时遇到了问题。英特尔的驱动程序在OpenGL支持方面非常糟糕,我的代码遇到了一个无法解释的渲染错误,因为它在创建渲染上下文时似乎默认为Intel系统,而不是Nvidia系统。

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

1 个答案:

答案 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