3

私は多くのAndroidデバイス(Lexus 7、SG ACe、HTC Desire ...)で非常にうまく動作するゲームに取り組んでいます。しかし、特にSGS1の場合、私は黒い画面よりも良くなることはできません。コード全体を詳しく調べた結果、問題はシェーダーコードにあると思います。コンパイルは問題ありません。リンクも問題ありませんが、異なるGPU間の非互換性について聞いています(たとえば、http: //www.jpct.net/forum2/index.php/topic,2833.15.html)。

シェーダーコードは次のとおりです。

[バーテックス]

uniform mat4 uMVPMatrix;    // Ortho matrix
attribute vec2 vPosition;   // Vertex position
void main(){
    gl_Position = uMVPMatrix * vec4(vPosition, 0.0, 1.0);
}

[断片]

precision mediump float;
uniform lowp vec4 CurColor;
void main(){
    gl_FragColor = CurColor;
}

たとえそれが非常に基本的であったとしても、おそらくこれには明らかに何かが間違っていますか?前もって感謝します。

4

2 に答える 2

1

私はついにそれを理解しました。私は2つの問題を抱えていました:

1) PowerVR はユニフォームの「lowp」修飾子を嫌うようです

2) 他のシェーダーでは、vPosition に 'vec4' を使用しましたが、頂点 (X,Y) によって 2 つのコンポーネントしか渡しませんでした。それについての奇妙なことは、なぜ他の GPU がそのような間違いで動作するのかということです。mali が提供するようなチェッカー (malideveloper.com/developer-resources/tools/…) は、PowerVR にとって非常に新鮮です!

于 2012-09-05T07:19:30.000 に答える
0

ここにいくつかのアドバイスがあります:

  • LogCat エラーがあるかどうかを確認してください
  • glGetError()0 以外の値を返すかどうかを確認します
  • クリアカラーを変更して、画面が黒のままかどうかを確認します。変更された場合、オブジェクトは見えなくなります

これらのいくつかを試した後、私にコメントしてください。

于 2012-09-03T19:53:43.737 に答える