この質問が回答しているかどうかわかりません。少なくとも私は答えを見つけられませんでした。Androidで大きなビットマップを描く
ここには何かがあります:私はアンドロイドで空間テーマの2Dゲームを作っており、画面サイズ= 2560x1600のエミュレータでテストしています。このゲームでは、宇宙船が飛んでいるフィールドがあります。そして、もちろん(フィールド)は、高解像度で美しい背景を持っている必要があります。私の背景イメージの解像度は4500x4500です。私はカメラの動きに相対して画像を反対方向に動かしたいので、小さな静止画像を使うことができないのです。当時この画像の一部のみが表示されます:
:私はFPS = 1-2(もちろん、それが原因で、画像サイズの低い)を得、それを描画しようとしたとき
canvas.drawBitmap(getBigImage(), -x, -y, null);
/* getBigImage() method does nothing but returning
a Bitmap object (no calculation or decoding is performing in there) */
私は大きなものから必要な画像を切り出すことを試みたが、FPSはまだ低かった:
Bitmap b = Bitmap.createBitmap(getBigImage(), x, y, sw, sh);
canvas.drawBitmap(b, 0, 0, null);
どのように私は高いFPSで、この大きなビットマップを描くことができますか?
実際に入力画像からsrc矩形を切り取るか、サイズを変更するだけですか?そして、src.x + src.width> bitmap.width?その場合、例外はスローされません。 –
単純にソース矩形内のイメージをキャンバスの矩形に描画します。ソースビットマップのピクセルは削除されません。ソースの四角形がソースのビットマップより大きい場合、私は例外があると確信しています。それがあなたのFPSをまったく改善できるかどうかをすぐに試してみてください。 –
私はこれを次のようにテストしました: 'Rect rect = new Rect(0、0、sw、sh); ビットマップb = Data.Images.getImage(R.drawable.neb_1); canvas.drawBitmap(b、rect、rect、null); ' Fpsはまだ低かった(1-2)。 非常に大きな画像を描画するためのトリックや何かがあるかもしれません。 –