【发布时间】:2026-01-14 04:20:04
【问题描述】:
我正在尝试运行这个 GL 演示,但如果我设置 MESA_GL_VERSION_OVERRIDE=3.0,它只能在 CentOS 7 中运行,如下所示:
git clone https://github.com/ebassi/glarea-example.git
make
MESA_GL_VERSION_OVERRIDE=3.0 ./glarea
我尝试将 #version 更改为 110 和 120,但编译失败。
问题:
- 不应该以某种方式检测 GL 版本吗?
- 将其构建为跨平台 OpenGL 应用程序以在许多不同的 Linux 发行版上运行的正确方法是什么?
顶点和片段代码如下:
==> 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);
}
【问题讨论】:
-
您可以尝试将着色器的版本设置为“#version 300 es”,看看是否可行? GLSL ES 3.0 有点类似于桌面 GLSL >= 130,因此它可能在不修改着色器代码的情况下工作。