NVIDIA Optimus卡未在OpenGL下切换



当我使用"glGetString(GL_VERSION)"one_answers"glGetString(GL_SHADING_LANGUAGE_VERSION

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 Optimus卡。这意味着它"自动"在集成英特尔图形和专用GPU之间进行选择。英特尔图形处理器最多只支持3.1,而专用GPU支持4.3。根据所选的版本,您最多只能支持该版本。Optimus唯一的问题是它只能自动选择DirectX、CUDA、C++AMP和OpenCL。

这引起了很多困惑和沮丧。

有几个解决方案可以强制使用专用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

相关内容

  • 没有找到相关文章

最新更新