AndroidのBitmapのロードについて
はじめまして
今OPENGLESで文字の描画を行っているのですが、何度も読み込んで解放してを繰り返していると
なぜかアプリが警告なしで 強制終了します。
バイト数を抑えると一応ロードは可能なのですが、これでは文字を動的に表示できなくてこまっています。
以下がロードする文字列です
public void textload(String[] str,int x,int y, int size){
// Log.v("デバッグ","ロード開始");
GL10 gl = glGraphics.getGL();
int[] textureIds = new int[1];
gl.glGenTextures(1, textureIds, 0);
textureId = textureIds[0];
/**
* 空のビットマップを作成し、そこへ文字を書き込むことでGL上に描画を行う。
*/
//ビットマップの数値を計算
Log.v("デバッグ","ビットマップロード");
bitmap = Bitmap.createBitmap(640,480, Config.ARGB_4444);
canvas = new Canvas(bitmap);
Paint paint = new Paint();
Log.v("デバッグ","完了");
paint.setColor(Color.WHITE);
paint.setStyle(Style.FILL);
paint.setTextSize(size);
canvas.drawColor(0);
for(int i=0;i<str.length;i++){
if(str[i] != null){
canvas.drawText(str[i], x, y + size*(i+1), paint);
}
}
width = bitmap.getWidth();
height = bitmap.getHeight();
gl.glEnable(GL10.GL_TEXTURE_2D);
Log.v("デバッグ","ビットマップをtexImage2Dに");
// ! テクスチャ情報の設定
gl.glBindTexture(GL10.GL_TEXTURE_2D, textureId);
gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_NEAREST);
gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER, GL10.GL_NEAREST);
//setFilters(GL10.GL_NEAREST, GL10.GL_NEAREST);
GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bitmap, 0);
Log.v("デバッグ","完了");
// ! bitmapを破棄
Log.v("デバッグ","解放処理開始");
if(bitmap !=null){
bitmap.recycle();
bitmap = null;
}
Log.v("デバッグ","解放処理完了");
//Log.v("デバッグ","ロード完了");
}
かなり困っています・・・
どなたかご教授お願いします・・・