当我使用“glGetString(GL_VERSION)”和“glGetString(GL_SHADING_LANGUAGE_VERSION)”来检查我的计算机上的OpenGL版本时,我得到了以下信息:
3.1.0 - 为GL_VERSION构建8.15.10.2538
1.40 - 针对GL_SHADING_LANGUAGE_VERSION的英特尔Build 8.15.10.2538
当我运行“Geeks3D GPU Caps Viewer”时,它显示我的显卡的OpenGL版本(NVS 4200M)
GL_VERSION:4.3.0
GLSL版本:4.30 NVIDIA通过Cg编译器
这是否意味着我的显卡只支持一些OpenGL 4.3.0功能,而我无法创建4.3上下文?
答案 0 :(得分:13)
您的显卡是NVIDIA Optimus卡。这意味着它在集成的英特尔图形和专用GPU之间“自动”选择。英特尔图形仅支持3.1,而专用GPU支持4.3。根据选择的那个,您将只支持该版本。 Optimus唯一的问题是它只能自动获取DirectX,CUDA,C ++ AMP和OpenCL。
这导致了很多confusion and frustration。
有一些解决方案可以强制使用专用GPU:
_declspec(dllexport) DWORD NvOptimusEnablement = 0x00000001;
。这通常是最好的解决方案,但是,根据您使用的语言,您可能无法导出全局变量。NVIDIA发布了一份关于这样做的文件:http://developer.download.nvidia.com/devzone/devcenter/gamegraphics/files/OptimusRenderingPolicies.pdf