私はシェーダーが初めてで、昨日それらのいくつかをいじり始めました。Windows PC では正常にコンパイルされますが、Mac で実行すると、両方でエラーが発生します。
エラー: 0:14: '=' : 'const int' から '4-component vector of float' に変換できません
Android では、2 番目のシェーダーでのみエラーが発生します。オーバーロードされた一致する関数ドットがないという言及の上にエラーがあります。
これらは同じ頂点シェーダーを使用します。
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;
}
1 つのフラグメント シェーダー (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;
}