了解 glxinfo OpenGL 版本

了解 glxinfo OpenGL 版本

glxinfo 命令输出的所有不同版本字符串之间有什么区别?

我已经问过了这里,但没有得到很多回复,无论如何,AskUbuntu 上似乎有更多相关问题。

输出glxinfo|grep OpenGL如下,

 glxinfo |grep Open
    Vendor: Intel Open Source Technology Center (0x8086)
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.0.2
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.0.2
OpenGL shading language version string: 1.30
OpenGL context flags: (none)
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 3.2 Mesa 13.0.2
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
OpenGL ES profile extensions:
.

为什么“核心配置文件”是 4.5 ,而 OpenGL 版本字符串是 3.0 ?

答案1

OpenGL ES 是原始 OpenGL 规范的一个子集,专为智能手机等嵌入式系统而设计。我不确定为什么版本号不一致,但确实不一致。最新版本是 OpenGL 4.5 和 OpenGL ES 3.2。这解释了输出中 OpenGL ES 部分的原因。就您而言,您支持最新版本的 OpenGL 和 OpenGL ES。

您会注意到,OpenGL 和 OpenGL ES 条目具有版本字符串和着色语言版本字符串。在 OpenGL 3.3 之前,OpenGL 版本号和着色语言版本号不匹配。我相信这就是它们在输出中有单独条目的原因(因为它们对于较旧的硬件显然可能不同)。如您的输出所示,版本号(4.5)与着色语言版本(也是 4.5)匹配。

最难的部分(也是我不是 100% 确定的部分)是“OpenGL 版本字符串”。

从我在几台完全不同的机器上看到的情况来看,版本上限似乎为 3.0。3.0 的着色语言版本是 1.3,因此着色语言版本字符串对于此 OpenGL 版本有意义。但是,为什么版本上限为 3.0?我的想法如下:

3.0 版引入了弃用功能(请参阅此链接)。这也是两个独立配置文件“核心”和“兼容性”的由来。OpenGL 的任何实现只需实现“核心”规范即可有效。

如果您阅读特定版本的 Mesa 发行说明,您将看到与此核心/兼容性配置文件问题相关的声明。以下内容摘自最新版本 17.0.0 的发行说明这里

Mesa 17.0.0 implements the OpenGL 4.5 API, but the version reported by glGetString(GL_VERSION) or glGetIntegerv(GL_MAJOR_VERSION) / glGetIntegerv(GL_MINOR_VERSION) depends on the particular driver being used. Some drivers don't support all the features required in OpenGL 4.5. OpenGL 4.5 is only available if requested at context creation because compatibility contexts are not supported.

注意最后一部分“OpenGL 4.5 仅在创建上下文时请求时才可用,因为不支持兼容上下文”。因此,我认为“OpenGL 版本字符串”是“兼容性”配置文件上下文支持的版本(换句话说,支持 3.0 版之前的任何已弃用功能)。

相关内容