首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >除非设置MESA_GL_VERSION_OVERRIDE=3.0,否则顶点着色器的编译失败

除非设置MESA_GL_VERSION_OVERRIDE=3.0,否则顶点着色器的编译失败
EN

Stack Overflow用户
提问于 2021-11-21 02:03:59
回答 1查看 126关注 0票数 1

我正在尝试运行这个GL演示,但是它只在CentOS 7中运行,如果我设置了MESA_GL_VERSION_OVERRIDE=3.0,如下所示:

代码语言:javascript
运行
复制
git clone https://github.com/ebassi/glarea-example.git
make
MESA_GL_VERSION_OVERRIDE=3.0 ./glarea

如果没有该环境变量,我将得到以下错误:

我尝试过将#version更改为110和120,但是它无法编译。

问题:

  • 不应该以某种方式检测GL版本吗?
  • 将其设置为跨平台OpenGL应用程序以在许多不同的Linux发行版上运行的正确方法是什么?

顶点和片段代码如下:

代码语言:javascript
运行
复制
==> glarea-fragment.glsl <==
#version 130

smooth in vec4 vertexColor;

out vec4 outputColor;

void main() {
  outputColor = vertexColor;
}

==> glarea-vertex.glsl <==
#version 130

in vec3 position;
in vec3 color;

uniform mat4 mvp;

smooth out vec4 vertexColor;

void main() {
  gl_Position = mvp * vec4(position, 1.0);
  vertexColor = vec4(color, 1.0);
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-21 08:56:20

我认为您忽略了描述超覆实际工作的部分:

更改glGetString(GL_VERSION)返回的值,并可能更改GL类型。 ..。Mesa可能并没有真正实现所有给定版本的特性。(只适用于开发人员)

这意味着,如果强迫OpenGL版本报告我的Mesa,您就会感到幸运的是,特定的演示程序运行/运行良好,因为Mesa没有实现所需版本的某些特性,并且可能会崩溃或行为不当。

  • Mesa为不同级别的不同设备实现了一个OpenGL驱动程序列表。因此,OpenGL报告的版本不需要重写,取决于图形设备。
  • 此外,Mesa在实现特定图形卡的特定版本的OpenGL方面也有不同的进展。因此,升级Mesa可能会带来更新的OpenGL版本(虽然升级Mesa通常需要升级Linux;但是如果您正在实际的硬件上运行,您可以尝试专有的图形驱动程序)。
  • 此外,Mesa还实现了不同级别的OpenGL 兼容的核心剖面。在请求OpenGL核心配置文件时,现代应用程序可能使用更高的版本。您可以通过运行glxinfo来检查差异,该报告系统中有关核心和兼容配置文件的信息。

所以回到问题上来。

不应该以某种方式检测GL版本吗?

是的,通常要求应用程序检查glGetString(GL_VERSION)并在版本低于支持的情况下终止有意义的消息(而不是像本示例那样试图编译不支持版本的GLSL程序)。

将其设置为跨平台OpenGL应用程序以在许多不同的Linux发行版上运行的正确方法是什么?

这不是构建应用程序的问题,而是开发应用程序的问题。为了更好地兼容,应用程序应该支持它可以运行的较低版本的OpenGL。在这种特殊情况下,我想,使代码与OpenGL 2.1兼容将是一项小小的努力。

但同时,较新的GTK版本在默认情况下创建核心配置文件,而不是兼容配置文件,这样便携式应用程序应该能够同时处理两者(通过提供不同的GLSL程序/处理缺失的GL函数等等)。

我对CentOS 7不太了解,但它看起来很旧(2014年发布)--我想参考的示例在大多数现代的Linux发行版上运行得很好,无需修改(使用更新的Mesa和更新的GTK)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70051270

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档