【问题标题】:NVIDIA Optimus card not switching under OpenGLNVIDIA Optimus 卡在 OpenGL 下不切换
【发布时间】:2013-08-06 22:58:40
【问题描述】:

当我使用“glGetString(GL_VERSION)”和“glGetString(GL_SHADING_LANGUAGE_VERSION)”检查计算机上的OpenGL版本时,我得到了以下信息:

3.1.0 - 为 GL_VERSION 构建 8.15.10.2538

1.40 - 用于 GL_SHADING_LANGUAGE_VERSION 的英特尔内部版本 8.15.10.2538

当我运行“Geeks3D GPU Caps Viewer”时,它显示我的显卡(NVS 4200M)的 OpenGL 版本是

GL_VERSION:4.3.0

GLSL 版本:4.30 NVIDIA 通过 Cg 编译器

这是否意味着我的显卡只支持部分 OpenGL 4.3.0 功能,无法创建 4.3 上下文?

【问题讨论】:

  • 这是您的笔记本电脑无法切换到使用NVIDIA芯片的问题;它改为使用英特尔芯片。搜索“OpenGL”和“Optimus”。
  • @Nicol Bolas 非常感谢!我更改了 NVIDIA 控制面板上的设置。

标签: opengl nvidia optimus


【解决方案1】:

您的显卡是NVIDIA Optimus 卡。这意味着它“自动”在集成英特尔显卡和专用 GPU 之间进行选择。英特尔显卡最高仅支持 3.1,而专用 GPU 支持 4.3。根据选择的版本,您最多只能支持该版本。 Optimus 的唯一问题是它只会自动选择 DirectX、CUDA、C++ AMP 和 OpenCL。

这引起了很多confusionandfrustration

有一些解决方案可以强制使用专用 GPU:

  1. 最简单的方法是通过 NVIDIA 控制面板强制您的应用程序使用专用 GPU。这通常是权宜之计,因为它只适用于您的机器。
  2. 在程序开始时调用一小部分(或链接到)CUDA 或 OpenCL 以触发切换到专用卡。但是,这会增加对 CUDA 或 OpenCL 的依赖。
  3. 导出全局变量_declspec(dllexport) DWORD NvOptimusEnablement = 0x00000001;。这通常是最好的解决方案,但是,根据您使用的语言,您可能无法导出全局变量。

NVIDIA 发布了一份关于这样做的文档:http://developer.download.nvidia.com/devzone/devcenter/gamegraphics/files/OptimusRenderingPolicies.pdf

【讨论】:

  • 非常感谢!我按照您的第一个建议解决了这个问题。稍后我会阅读文档并检查其他解决方案。
猜你喜欢
  • 2014-10-11
  • 1970-01-01
  • 2014-09-12
  • 2016-07-30
  • 2013-10-25
  • 2013-07-17
  • 1970-01-01
  • 2021-06-16
  • 1970-01-01
相关资源
最近更新 更多