Sono nuovo per gli shader e ho iniziato a giocare con alcuni di loro ieri. Essi compilano benissimo sul mio PC Windows, ma quando sono correvano su Mac, c'è un errore per entrambi:Errore Shader GLSL su Mac, ma non Windows: impossibile convertire da 'const int' a 'Vettore a 4 componenti di float'
ERROR: 0:14: '=' : cannot convert from 'const int' to '4-component vector of float'
Su Android solo il secondo Shader mi dà un errore. Ha l'errore sopra un accenno al fatto che non c'è alcun punto di funzione corrispondente sovraccaricato.
usano lo stesso vertex shader:
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;
}
un frammento Shader (errore su 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;
}
L'altro Fragment Shader (errore su Mac e 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;
}
Quale linea in quale file causa questo errore? – Aaron