2013-08-06 42 views
3

下不切换,当我用用 “glGetString(GL_VERSION)” 和 “glGetString(GL_SHADING_LANGUAGE_VERSION)” 来检查我的电脑上的OpenGL版本,我得到了以下信息:NVIDIA的Optimus卡的OpenGL

3.1.0 - 构建8.15.10.2538为GL_VERSION

1.40 - 英特尔构建8.15.10.2538为GL_SHADING_LANGUAGE_VERSION

当我跑了 “Geeks3D GPU效能查看器”,它显示了OpenGL版本的我的显卡(NVS 4200M)是

GL_VERSION :4.3.0

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

这是否意味着我的显卡只支持OpenGL的一些功能4.3.0,我不能创建4.3语境?

+0

这是你的笔记本电脑无法切换到使用NVIDIA芯片问题;它改为使用英特尔芯片。搜索“OpenGL”和“Optimus”。 –

+0

@Nicol Bolas非常感谢!我更改了NVIDIA控制面板上的设置。 – Amy

回答

13

您的图形卡是一张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

+0

非常感谢!我按照你的第一个建议解决了这个问题。我将在稍后阅读文档并检查其他解决方案。 – Amy

相关问题