6

こんにちは。Android プラットフォームでゲーム アプリケーションを開発しています。初めてのアンドロイド開発経験です。私のゲームはスプライト グラフィックを実装します。一連のスプライトごとにパレットが定義された 8 ビット形式のスプライトがあります。このスプライトを android.graphics.Bitmap オブジェクトにロードする必要があります。今、私は次のように実装しました:

int [] pixels = new int[spriteWidth * spriteHeight];
//here i'm filling pixels array
//... pixels[x,y] = myPalette[colorIndex];
Bitmap.createBitmap(spriteWidth, spriteHeight, Bitmap.Config.ARGB_8888);
bitmap.setPixels(pixelsArray, 0, spriteWidth, 0, 0, spriteWidth, spriteHeight);

それはうまく機能しますが、ARGB_8888を指定したため、各ピクセルに4バイトを使用する必要があるため、メモリの使用が心配です。

私の質問は: インデックス付きの色で 8 ビットのビットマップを作成し、そのパレットを定義し、各ピクセルの色インデックスを定義する方法はありますか?

PS私は、適切なbmpヘッダー、パレット、およびピクセルデータを含むバイトストリームを手動で形成すると、次を使用して正しくロードできることに気付きました。

BitmapFactory.decodeStream(bmpStream);

2 番目の質問は次のとおりです。この方法で画像を読み込むと、上記のソリューションよりもメモリ使用量が効率的になりますか? それとも、独自の内部ルーチンを使用してストリームを同じ 32 ビット/ピクセル形式にデコードする bitmapFactory でしょうか?

どんな助けでも大歓迎です。申し訳ありませんが、私の英語は苦手です。

4

0 に答える 0