3

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

3.1.0 - 为 GL_VERSION 构建 8.15.10.2538

1.40 - Intel Build 8.15.10.2538 for GL_SHADING_LANGUAGE_VERSION

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

GL_VERSION:4.3.0

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

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

4

1 回答 1

13

您的显卡是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

于 2013-08-06T04:26:22.617 回答