1

次のフラグメントシェーダーがあります。

varying highp vec2 tCoord;

void main() {
    vec4 hc = texture2D(hair, tCoord);
    gl_FragColor = hc;
}

私のプログラムでは、画面上に約 15 個の画像を描画しています (2D のみで、3D 操作はありません)。すべての画像を指で移動できるようにします。したがって、画像が画面上にあるときは 40 fps ですが、(指で) 画面の外に移動すると 60 fps になります。(これにより、プログラムまたは頂点シェーダーのボトルネックが解消されます)。これを Galaxy Tab 7" で実行しています。

これは非常に単純なシェーダーなので、常に 60 fps を期待します。これが遅い理由は何ですか?

4

2 に答える 2

2

highpおそらく、ほとんどの Android デバイスなどの組み込みハードウェアでは加速されません。デフォルトの精度を使用することはまったく役に立ちますか? 低解像度の画面でテクスチャ座標にそれほどの精度が必要なのはなぜだと思いますか?

于 2011-06-21T21:56:57.210 に答える
0

私はAndroid 3.2.1とopengl es 2.0でtegraプラットフォームに取り組みました。

間に変数を必要とせずに生きることができる場合は、直接割り当ててみてください。変数の作成と割り当てが 3 ~ 5 fps のコストがかかることを経験しました。texture2d も fps でその範囲のコストがかかります。

varying highp vec2 tCoord;

void main() {
    gl_FragColor = texture2D(hair, tCoord);
}
于 2012-06-14T12:33:34.683 に答える