我是着色器的新手,我昨天开始玩其中的一些。它们在我的 Windows PC 上编译得很好,但是当它们在 Mac 上运行时,两者都有一个错误:
错误:0:14:“=”:无法从“const int”转换为“float 的 4 分量向量”
在 Android 上,只有第二个着色器给了我一个错误。它有上面的错误,提到没有匹配的函数点被重载。
他们使用相同的顶点着色器:
attribute vec4 a_position;
attribute vec4 a_color;
attribute vec2 a_texCoord0;
uniform mat4 u_projTrans;
varying vec4 vColor;
varying vec2 vTexCoord;
void main() {
vColor = a_color;
vTexCoord = a_texCoord0;
gl_Position = u_projTrans * a_position;
}
一个片段着色器(Mac 上的错误):
#ifdef GL_ES
#define LOWP lowp
precision mediump float;
#else
#define LOWP
#endif
varying LOWP vec4 vColor;
varying vec2 vTexCoord;
uniform sampler2D u_texture;
void main() {
vec4 texColor = texture2D(u_texture, vTexCoord);
texColor.rgb = 1.0 - texColor.rgb;
gl_FragColor = texColor * vColor;
}
另一个片段着色器(mac和android上的错误):
#ifdef GL_ES
#define LOWP lowp
precision mediump float;
#else
#define LOWP
#endif
varying LOWP vec4 vColor;
varying vec2 vTexCoord;
uniform sampler2D u_texture;
void main() {
vec4 texColor = texture2D(u_texture, vTexCoord);
vec3 gray = vec3(0.2125, 0.7154, 0.0721);
vec4 color = dot(gray, texColor);
color.a = texColor.a;
gl_FragColor = color * vColor;
}