5

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 で同じバグが確認されました。詳細については、私の回答を参照してください。

4

1 に答える 1

0

xda-developers のさまざまなファームウェアでアプリをテストするように依頼しました。一部のデバイスでは問題なく動作しますが、別のデバイスではこの視覚的な不具合が発生します。

そのため、特定の非在庫 ROM で修正された OpenGL ドライバーのバグに関連していると結論付けています。

EDIT : 古い Qualcomm の Adreno 220 ドライバーのバグとして確認されました。ストック 4.0.3 ROM を搭載したHTC Rezound電話(Adreno 220 も) にも同じバグがあり、アプリだけでなく一部のゲームにも存在し、特定のオブジェクトの特定の行またはピクセルが欠落していました。ルート化して CM 4.1 をインストールすると、バグが消えました。

于 2013-01-29T09:57:35.610 に答える