不支持 GLSL 1.30

Posted

技术标签:

【中文标题】不支持 GLSL 1.30【英文标题】:GLSL 1.30 is not supported 【发布时间】:2014-01-21 15:46:01 【问题描述】:

我已经在我的 ubuntu 系统上成功地运行了我的 gl 程序,并带有一个好的显卡。但是,当我在具有图形移动 4 系列的旧英特尔机器上运行它时,我收到以下错误:

QGLShader::compile(Vertex): 0:1(10): error: GLSL 1.30 is not supported. Supported version are: 1.10, 1.20 and 1.00 ES
QGLShader::compile(Fragment): 0:1(10): error: GLSL 1.30 is not supported. Supported version are: 1.10, 1.20 and 1.00 ES

我认为我的顶点和片段着色器文件中的一些关键字应该更改为旧版本。任何人都可以建议我旧的关键字。

顶点着色器文件:

#version 130

uniform mat4 mvpMatrix;

in vec4 vertex;
in vec2 textureCoordinate;

out vec2 varyingTextureCoordinate;

void main(void)

    varyingTextureCoordinate = textureCoordinate;
    gl_Position = mvpMatrix * vertex;

片段着色器文件:

#version 130

uniform sampler2D texture;

in vec2 varyingTextureCoordinate;

out vec4 fragColor;

void main(void)

    fragColor = texture2D(texture, varyingTextureCoordinate);

【问题讨论】:

请阅读when someone answer 和/或访问tour 中的所有主题(这也会给你一个徽章) 【参考方案1】:

在page 2 of the GLSL 1.30 spec 上向后运行功能弃用列表:

#version 130 -> #version 120 in -> attribute out -> varying 删除fragColor 声明,将fragColor 用法替换为gl_FragColor

顶点着色器:

#version 120
uniform mat4 mvpMatrix;
attribute vec4 vertex;
attribute vec2 textureCoordinate;
varying vec2 varyingTextureCoordinate;
void main(void)

    varyingTextureCoordinate = textureCoordinate;
    gl_Position = mvpMatrix * vertex;

片段着色器:

#version 120
uniform sampler2D texture;
varying vec2 varyingTextureCoordinate;
void main(void)

    gl_FragColor = texture2D(texture, varyingTextureCoordinate);

【讨论】:

以上是关于不支持 GLSL 1.30的主要内容,如果未能解决你的问题,请参考以下文章

错误:不支持GLSL 3.30。支持的版本包括:1.10,1.20,1.30,1.00 ES,3.00 ES,3.10 ES和3.20 ES [关闭]

不支持 GLSL 330 内核

片段着色器中设置的颜色未显示 GLSL 1.30

nVidia GLSL 不支持 sampler1D?

C++ OpenGL 着色版本错误 - 不支持 GLSL x [Ubuntu 16.04]

openGL之API学习(一七七)opengl gles glsl glsl es版本对应关系