OpenGL头文件版本信息不匹配

时间:2011-12-30 13:46:45

标签: c linux opengl

我正在使用linux上的opengl编程,我有些疑惑。

glxinfo为我提供了以下OpenGL版本:

  

OpenGL版本字符串: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

因此没有为1.4,1.5,2.0定义GL_VERSION_xx。所以我的问题是,为什么头文件不包括GL版本的定义,最多2.0(至少)? 我应该用更合适的东西更改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

弗朗西斯

1 个答案:

答案 0 :(得分:3)

您需要将实际实现的OpenGL版本与头文件中的内容分开。 OpenGL头文件的内容通常是某种最低标准,因为OpenGL具有扩展系统。 OpenGL实现(也)通过扩展系统提供其功能,扩展系统实际上是某种形式的动态库链接。

这允许需要扩展功能的程序在具有较少功能的系统上运行,以便正常中止,在libGL中提供一些有用的错误消息而不是"所需的符号glShaderSource。所以不解决" ,这可能会使用户感到困惑,甚至可能会降低兼容​​模式。

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