ディスクからモノクロ画像データをバイナリ形式(符号なしバイト)で読み込み、Android で OpenGL ES 2 テクスチャとして表示したいと考えています。現在、Eclipse と AVD エミュレーターを使用しています。
InputStream を使用してディスクからデータを読み取り、バイト データを int に変換して、createBitmap メソッドを使用できるようにすることができます。
ビットマップ形式として ALPHA_8 を使用してモノクロのビットマップを作成したかったのですが、レンダリングするとテクスチャが真っ黒になってしまいます。ビットマップ形式を RGB_565 に変更すると、画像の一部が表示されますが、データ形式が間違っているため、もちろん色がすべて乱れています。
texImage2D() に追加のパラメータを追加して、テクスチャ フォーマットとソース データ タイプを強制しようとしましたが、texImage2D 引数で opengl テクスチャ フォーマット コードのいずれかを使用すると、Eclipse でエラーが表示されます。
これを編集してモノクロ テクスチャを OpenGL ES に取り込む方法を誰か教えてもらえますか?
int w = 640;
int h = 512;
int nP = w * h; //no. of pixels
//load the binary data
byte[] byteArray = new byte[nP];
try {
InputStream fis = mContext.getResources()
.openRawResource(R.raw.testimage); //testimage is a binary file of U8 image data
fis.read(byteArray);
fis.close();
} catch(IOException e) {
// Ignore.
}
System.out.println(byteArray[1]);
//convert byte to int to work with createBitmap (is there a better way to do this?)
int[] intArray = new int[nP];
for (int i=0; i < nP; i++)
{
intArray[i] = byteArray[i];
}
//create bitmap from intArray and send to texture
Bitmap img = Bitmap.createBitmap(intArray, w, h, Bitmap.Config.ALPHA_8);
GLUtils.texImage2D(GLES20.GL_TEXTURE_2D, 0, img, 0);
img.recycle();
//as the code is the image is black, if I change ALPHA_8 to RGB_565 then I see a corrupted image
ご協力いただきありがとうございます、
ルーク