C++ OpenGL着色版本错误 - 不支持GLSL x [Ubuntu 16.04]

Nic*_*sen 5 c++ opengl ubuntu shader glsl

我目前正在研究在Ubuntu 16.04上使用OpenGL的项目,并遇到了一个重大问题.在这一点上,我不知道该怎么做,因为感觉我已经尝试了一切以解决这个问题.

由于某种原因,我的着色器不会编译并返回以下错误:

Failed to compile vertex shader!
0:1(10): error: GLSL 4.50 is not supported. Supported versions are: 1.10, 1.20, 1.30, 1.00 ES, 3.00 ES, 3.10 ES, and 3.20 ES`
Run Code Online (Sandbox Code Playgroud)

我已经调整了着色器文件中的版本而没有任何运气.#version 450 core等等,但我一直得到相同的结果.

供参考,以下是输出sudo glxinfo | grep "OpenGL":

OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) HD Graphics 520 (Skylake GT2)
OpenGL core profile version string: 4.5 (Core Profile) Mesa 13.1.0-devel
OpenGL core profile shading language version string: 4.50
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
OpenGL version string: 3.0 Mesa 13.1.0-devel
OpenGL shading language version string: 1.30
OpenGL context flags: (none)
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 3.2 Mesa 13.1.0-devel
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
OpenGL ES profile extensions:
Run Code Online (Sandbox Code Playgroud)

glxinfo的输出显示安装了OpenGL核心4.5,为什么不支持这个?

我还试图找到项目中使用的当前版本的OpenGL:std::cout << "OpenGL version: " << glGetString(GL_VERSION) << std::endl;这会导致返回空白.

到目前为止,我已经在这个问题上花了10个小时,所以任何帮助都表示赞赏!

编辑:有没有办法迫使项目/ Ubuntu使用OpenGL而不是GLSL,即完全删除GLSL(这一部分)?

OpenGL ES profile version string: OpenGL ES 3.2 Mesa 13.1.0-devel
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
OpenGL ES profile extensions:
Run Code Online (Sandbox Code Playgroud)

Nic*_*sen 6

对于遇到相同问题的其他人来说,这是对我有用的解决方案:

glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
Run Code Online (Sandbox Code Playgroud)