我应该如何解释 glewinfo 的输出?

how should I interpret the output of glewinfo?

运行 glewinfo 有很多信息,但其中一些信息令人困惑而不是有用。

这是我 http://pastebin.com/K5p37w8a

笔记本电脑上的 glewinfo

它告诉我我的 OpenGL 版本是 2.1,但是当我继续阅读时,有 GL_VERSION_3_0GL_VERSION_4_0 的条目,并且所有条目都说 OK.但是我不能调用那里列出的任何函数。

其他人用 OK [MISSING] 标记这是所有标记中最令人困惑的,因为它要么存在,要么丢失,但不能同时存在。

glewinfo 程序向您展示了所有存在的入口点(功能),它不会告诉您是否可以使用这些功能,或者这些入口点是否有效。一个函数可能报告正常,但如果调用它,您的程序仍然可能崩溃!要弄清楚有哪些功能可用,您必须查看扩展字符串和版本号。您可以从 glxinfo 获取此信息,您不需要 GLEW。

在这种情况下,您使用的是具有兼容性配置文件(默认配置文件)的 Mesa(OpenGL 实现)。在兼容模式下,Mesa 仅限于 OpenGL 2.1。但是,如果您请求核心配置文件,Mesa 将提供更新的功能并支持更新版本的 OpenGL。仍然使用相同的 Mesa 库,这就是为什么所有 OpenGL 4.0 入口点都可用的原因。

但是,当您将 GLEW 与核心配置文件一起使用时,它会有些损坏。 glewExperimental "fix" 是对有缺陷的实现的一个糟糕的创可贴。因此,我不推荐 GLEW。 glLoadGen 是一个不错的选择。