我正在尝试编译着色器,它正在一台PC上的Intel HD上进行编译,但在另一台PC上的AMD驱动程序上进行编译。
顶点着色器:
#version 330
precision mediump float;
precision lowp sampler2D;
uniform mat4 ProjectionMatrix;
uniform mat4 ModelViewMatrix;
uniform mat4 WorldViewMatrix;
in vec3 position;
in vec2 TexCoord;
out vec2 texCoord;
void main() {
texCoord = TexCoord;
gl_Position = ProjectionMatrix * ModelViewMatrix * WorldViewMatrix * vec4(position, 1);
}
片段着色器:
#version 330
precision mediump float;
precision lowp sampler2D;
uniform vec4 TextureHueColor;
uniform sampler2D TextureUnit;
in vec2 texCoord;
out vec4 gl_FragColor;
void main() {
gl_FragColor = texture(TextureUnit, texCoord) * TextureHueColor;
}
在AMD驱动程序上,我得到了:
Vertex shader failed to compile with the following errors:
ERROR: 0:3: error(#228) Type should be float or int
ERROR: error(#273) 1 compilation errors. No code generated
我是初学者,不知道这个着色器有什么问题,对我来说看起来很好。有人发现了什么问题吗?
答案 0 :(得分:5)
GLSL 3.30中的默认precision
限定符无法应用于采样器类型。或int
或float
以外的任何类型。
另外,仅供参考:当使用桌面GLSL(而不是GLSL ES)时,precision
限定符无效。他们被忽略了;它们仅用于与GLSL ES着色器兼容。