結局自分で実験してみるしかないんだよな…。 
2013/12/05 Thu [edit]

Android エミュレータ
結局、標準 View では描画処理が追いつかないみたいなので、今度は SurfaceView で作り直してみた。本来ゲームのような高速描画が必要なものは OpenGL を使うものだろうが、勉強も兼ねて色々実験してみることにした。
以前の ScheduledExecutorService を使った処理はなぜかバグるので、他に色々なサンプルを分析してみたら、Thread で独自ループを作っているものが多かったので、真似して自作のレンダリングループを作ってみた。おかげでメソッド1つで処理できるようなものではなく、描画スレッドそのものを作るハメになったが、ついでに独自機能を付け加えておく事もできた。
fps 計測もその1つ。デバッグ用にいつも fps を見てると、処理速度が分り易いね。どうやら私の実機は最大 57fps くらいらしい(Android は最大 60fps)。でも少し描画処理が多くなると 30fps くらいまで落ちるね。
あと、面白いこと発見したのだが、Android の描画処理は グラフィック描画処理よりもビットマップ画像描画の方が速いらしい。というのは、以前サンプル作ったときに、ブロックの硬さに斜線を入れると描画処理が追いつかず、画面がカクカクすると書いたが、試しにブロックの描画処理 - 具体的に言うと、Canvas.drawRect() を画像に置き換えてみたら、レンダリング速度が 30fps 前後から 44fps くらいまで上がった。これにはビックリ。実は Applet 版作ってたときも同じ実験をしたのだが、Applet では画像よりもグラフィック描画の方がはるかに速かった。実際にPC版はあのようにものすごく速い。はじめはそのまま移植していたから、その違いがよくわかる。同じ Java でも Applet や Android では全然結果が異なるということだね。まぁ、PC の CPU/GPU と Android の CPU/GPU/FPU などのハード環境の違いもあるだろうし、コンポーネントの違いでも全然違うらしい。やっぱり色々試してみるもんだ。ネットでググった情報も結構違ってるもの多いしね。又聞きで書いてあるものも良くあること。結局自分で実験してみるしかないんだよな…。
※イラスト:こばP さん
- 関連記事
-
-
ADVっぽいパーサーを作成中・・・
-
Android にメッセージウィンドウを移植中…
-
Android と Applet の完全互換アプリを作ってみた
-
結局自分で実験してみるしかないんだよな…。
-
Android をアドベンチャーゲームっぽくしてみた
-
トラックバック
トラックバックURL
→http://fantom1x.blog130.fc2.com/tb.php/90-e2a4a976
この記事にトラックバックする(FC2ブログユーザー)
| h o m e |