OpenGL头文件版本信息不匹配

我在linux上用opengl编程玩了一些,我有些疑惑。

glxinfo给我以下的OpenGL版本:

OpenGL版本string:2.1 Mesa 7.11

我想这意味着我的系统使用Mesa实现支持OpenGL 2.1。

然后,如果我从/ usr / include查看GL / gl.h,则发现如下所示:

#define GL_VERSION_1_1 1 #define GL_VERSION_1_2 1 #define GL_VERSION_1_3 1 #define GL_ARB_imaging 1 

所以GL_VERSION_xx没有定义为1.4,1.5,2.0。 所以我的问题是,为什么头文件不包括高达2.0(至less)的GL版本的定义? 我应该用更合适的东西来更改GL / gl.h头文件?

有关信息,我正在使用标准的Ubuntu的Linux安装。 这里从glxinfo更多的信息:

 OpenGL vendor string: X.Org R300 Project OpenGL renderer string: Gallium 0.4 on ATI RV515 OpenGL version string: 2.1 Mesa 7.11 OpenGL shading language version string: 1.20 

弗朗切斯科

您需要在实际实现的OpenGL版本和头文件中包含的内容之间分开。 OpenGL头文件的内容通常是某种最常见的分母,因为OpenGL有一个扩展系统 。 OpenGL实现(也)通过扩展系统提供它们的功能,这实际上是某种形式的动态库链接。

这使得需要扩展功能的程序可以在系统中运行,而这些程序能够以较少的能力正常中止,给出一些有用的错误消息而不是“libGL.so中的所需符号glShaderSource不能解决”,这可能会使用户感到困惑,进入兼容模式。

获得更高OpenGL版本功能的最简单的方法是使用GLEW库( http://glew.sourceforge.net ),归结为包含GL/glew.h而不是GL/gl.h并调用glewInit()上下文创建后。