我已经在我的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
Run Code Online (Sandbox Code Playgroud)
我认为我的顶点和片段着色器文件中的一些关键字应该更改为旧版本.可以任何人建议我旧的关键字.
顶点着色器文件:
#version 130
uniform mat4 mvpMatrix;
in vec4 vertex;
in vec2 textureCoordinate;
out vec2 varyingTextureCoordinate;
void main(void)
{
varyingTextureCoordinate = textureCoordinate;
gl_Position = mvpMatrix * vertex;
}
Run Code Online (Sandbox Code Playgroud)
片段着色器文件:
#version 130
uniform sampler2D texture;
in vec2 varyingTextureCoordinate;
out vec4 fragColor;
void main(void)
{
fragColor = texture2D(texture, varyingTextureCoordinate);
}
Run Code Online (Sandbox Code Playgroud)
向后运行GLSL 1.30规范第2页上的功能弃用列表:
#version 130 - > #version 120in - > attributeout - > varyingfragColor声明,替换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;
}
Run Code Online (Sandbox Code Playgroud)
片段着色器:
#version 120
uniform sampler2D texture;
varying vec2 varyingTextureCoordinate;
void main(void)
{
gl_FragColor = texture2D(texture, varyingTextureCoordinate);
}
Run Code Online (Sandbox Code Playgroud)