ビットマップでハードウェアアクセラレーションAndroidビューを部分的に更新する正しい方法

StackOverflow https://stackoverflow.com//questions/24041579

質問

私はカスタムをカスタム描画する(フルスクリーン)を持っています。その一部を無効にしたい場合は、次のondraw()呼び出しでその部分を描画します。これをサイクルでやりたい、画面の各部分を一度に描きたいです。私が見つけたことは、Nexus 7(Android 4.4.2)でうまく機能することです(4.3)が、HTCセンセーションXL(4.0.3)で一度に画面全体を描画することはありません。いくつかのバグがパイプラインレンダリングで修正されましたか、それとも何か悪いことをしていますか? - これを行う正しい方法は何ですか?

詳細:私は一連の直立オブジェクトを持っています。無効化(RECT)を定期的に呼び出すハンドラに更新方法があります。毎回インデックスに基づいて。 ondraw()で

を使用
canvas.drawBitmap(background, src, dest, null);
.

ここで、srcとdestは無効化呼び出しに使用されたのと同じrectです。 ONDRAWメソッドの最後に、インデックスが更新されます。 Android 4.0.3全体のキャンバス全体が空白になっているが4.3と4.4.2ではありません。

本当に何を達成しようとしていますか? CPUが他のものを自由にすることができるように、OnDraw(<1ms)の各呼び出しでできるだけ少ない時間を過ごし、同時に描画されている数のビットマップが描かれ、回転されています。これは最も重要です。実行されている高齢化された携帯電話4.0.3

役に立ちましたか?

解決

最後に、私は問題を解決するための直接的な方法を見つけることができなかったので、私は異なるアプローチを取った。このチュートリアル。私はすべてのテクスチャ(PNGファイル)にすべてを置き、verticies、Issive、およびUVS配列、および関連する直接バッファをリサイクルします。その結果、遅い電話でも、レンダラクラス内のOnDrawFrameが約0.4 msで完了していることです。これが私が必要なものです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top