我正在尝试学习openGL和GLSL,而我宁愿在Ubuntu中学习。问题是我无法运行我的GLSL代码。当我使用
const GLubyte *shaderVersion = glGetString(GL_SHADING_LANGUAGE_VERSION);
std::cout<<shaderVersion<<std::endl;
输出为:1.30
当我在终端中运行glxinfo | grep OpenG
时,我得到这一行:
fingolfin@fingolfin:~$ glxinfo | grep OpenGL
OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) Haswell Mobile
OpenGL core profile version string: 3.3 (Core Profile) Mesa 11.1.0-devel (git-2496cfd 2015-10-10 vivid-oibaf-ppa)
OpenGL core profile shading language version string: 3.30
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
OpenGL version string: 3.0 Mesa 11.1.0-devel (git-2496cfd 2015-10-10 vivid-oibaf-ppa)
OpenGL shading language version string: 1.30
OpenGL context flags: (none)
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 3.0 Mesa 11.1.0-devel (git-2496cfd 2015-10-10 vivid-oibaf-ppa)
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.00
OpenGL ES profile extensions:
你可以看到OpenGL shading language version string: 1.30
,我认为这是我的问题。我更新了我的NVIDIA图形,但我认为该程序运行在我的英特尔高清显卡上,因此我的GLSL版本较低,因此无法运行。有没有办法让我的高清显卡有更高版本的GLSL?或者我有没有办法使用我的其他显卡(NVIDIA)运行我的程序?
我使用QtCreator和QT来运行我的代码,如果我能告诉QT使用我的其他显卡,那就太好了。
编辑:根据以下评论,我使用nvidia-prime切换到我的nvidia图片,现在glGetString(GL_SHADING_LANGUAGE_VERSION)
返回4.40。一切都很好