gpt4 book ai didi

c - OpenGL 头文件版本信息不匹配

转载 作者:太空狗 更新时间:2023-10-29 12:06:50 33 4
gpt4 key购买 nike

我在 linux 上玩了一点 opengl 编程,我有一些疑问。

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

OpenGL version 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 定义。所以我的问题是,为什么头文件不包含 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

弗朗切斯科

最佳答案

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

这允许需要扩展功能以在功能较少的系统上运行的程序优雅地中止,给出一些有用的错误消息而不是“libGL.so 中所需的符号 glShaderSource 无法解析”,这可能会使用户感到困惑,甚至进入兼容模式。

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

关于c - OpenGL 头文件版本信息不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8680093/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com