Android Coding: Drawing on SurfaceView
を参考にonPause(), onResume()を使用したところ、
実機で正常に起動するアプリを作成ができた。
とはいえ速度が15fpsぐらい。
解像度800x480は大きすぎるからどうにか低解像度にできないもんかな。
背景クリア、サイズ3のドット(?)を512個、●をひとつと文字列の描画のみ。
画像を描画とかしだすともっと食うだろうけど。
アンチェリ切ったりして若干の工夫で18fps程度に。
とりあえず満足したから次へ。
適当においてるドットの数を512から128にへらしたら50fps程度に。
そこからThread.sleep()で適当にウェイトをかけてだいたい30fpsにすることができた。
いまひとつ作法がわからないが要勉強だろう。
ガベコレちゃんがちょくちょくちょっかいかけてくるとかなんとかだから、
できるだけメモリを要求しないつくりにする必要があるが、Javaでメモリ管理なんてできるのかな。
c++ならplacement newとかでどうとでもなるが、
javaだと昔ながらのあらかじめ配列を用意する管理がシンプルか。うーん想像がつかない。
あとはcanvasで400x240ぐらいの小さいオフスクリーンをつくって
最後に拡大して表に出すぐらいすればそこそこ速度が稼げそうな気がしないでもない。
画像の持ち方が良くわからんが、まだいいか。
いまさらだけど端末エミュレータを毎回起動しなおしてたけど、
起動しっぱなしにしておけばよかったのね。面倒くさいなとは思ったんだ。
小さいBitmapを作ってそっちにレンダリング、最後に表に拡大して描画という方法を試してみたが、
かえって速度が落ちてしまった。15fpsぐらい。
400x240でも200x120でも15fps程度に落ち着いてしまうからなんかありそうではあるが。
Bitmap.Config.RGB_565でBitmapを作成するようにしたところ37~40fpsぐらいになった。
変換くらってたみたい。それでも巣で描画したほうがきれいで速い。
画像をまともに描画しようとするとまた違うのかも。
0 件のコメント:
コメントを投稿