Adreno 220 GPUを搭載したSony Xperia S電話での GLSL アルファ テストで問題が発生しました。デバイスは Android 4.0.4 を実行しています。
Adreno 200、Adreno 205、Adreno 225、およびTegra2、Mali400 、PowerVR GPU では問題なく動作します。
シェーダー コード:
// vertex
uniform highp mat4 uMVPMatrix;
attribute highp vec4 aPosition;
attribute highp vec2 aTextureCoord;
varying mediump vec2 vTextureCoord;
void main() {
gl_Position = uMVPMatrix * aPosition;
vTextureCoord = aTextureCoord;
}
// fragment
precision mediump float;
varying mediump vec2 vTextureCoord;
uniform sampler2D sTexture;
uniform sampler2D sAlpha;
uniform vec4 uBlendColor;
void main() {
vec4 base = texture2D(sTexture, vTextureCoord);
if(texture2D(sAlpha, vTextureCoord).r < 0.5){ discard; }
else { gl_FragColor = base * uBlendColor; }
}
バグのスクリーンショット:
他のデバイスでの正しい結果:
このような視覚的な不具合の原因、原因を見つける方法、および考えられる回避策をアドバイスしてください。
編集: HTC Rezound の古いストック ROM で同じバグが確認されました。詳細については、私の回答を参照してください。