0

キャンバスを使用してAndroidゲームを作成しようとしていますが、openglの方が優れているため悪いことはわかっていますが、当時はあまり考えていませんでしたが、今ではほぼ完了しており、それを完了して変換したいだけです後でopenglにします。

そのため、onDraw の開始時に、次のコードでビットマップを描画します。

Log.d("Start Time", System.nanoTime()/1000000 + "");
        canvas.drawBitmap(bitmaps.Background(), null, bg, paint);
        Log.d("After drawColor", System.nanoTime()/1000000 + "");

ご覧のとおり、長方形に基づいてビットマップを描画するため、引き伸ばされて描画されます。ログを使用してこれにかかった時間を確認したところ、この 1 つのビットマップを描画するだけで約 15 ~ 20 ミリ秒かかっていることがわかりました。

なぜこれが起こっているのか誰にも分かりますか?また、canvas から opengl に切り替える簡単な方法を誰かが知っていれば、それは素晴らしいことです :p

ウィリアム

4

2 に答える 2

1

ですか?bg_ Rectその場合、描画する前にビットマップをスケーリングする必要があり、時間がかかります。ビットマップを事前にスケーリングできるかどうかを確認してください。

paint第二に、drawBitmap通話中にが本当に必要ですか? null変換を行っていない場合は、代わりに渡すことができます。

また、System.currentTimeMillis()ミリ秒を取得するためにナノ秒を割る代わりに使用してみませんか?

于 2012-07-08T05:30:28.210 に答える
0

私はbitmaps.Background()がメソッドであることに気づきました。万が一、リソースファイルからビットマップを繰り返し解凍しているのでしょうか。フレームごとにビットマップを描画する場合は、ビットマップオブジェクトをメモリに保持する必要があります。(既存のビットマップオブジェクトを画面に描画するだけでは、それほど時間はかかりません。)

于 2012-07-11T04:14:50.723 に答える