人気ブログランキング | 話題のタグを見る

Android端末とリフレッシュレート

ちょいと気になったので、色々実験してみた。

リフレッシュレートを取得するコードは、ぐぐれば沢山あるので省略。

手持ちの端末で表示した結果、

60.0

という値が表示された。
(なぜ取得関数は、float型で返すのだろうか…)
今作成しているアプリは、GLを使わず、Canvasを使用して描画している。
2Dのゲームなので、これで十分だ。

1フレーム分の処理にかかった時間から、スリープ時間を算出してsleepしているわけだが、
この sleep処理をコメントアウトしても、60fps以上が出ない。

特にFPSを制御する命令など入れた覚えはないのだが…。
で、調べたら、描画するためのCanvasを取得する関数、

canvas = holder.lockCanvas();

これが原因らしい。
どうやら、内部で、リフレッシュレートに合わせた操作をしているらしく、
リフレッシュレートよりも早い間隔でアクセスすると、処理時間の算出がうまくいかないようだ。

ためしにコメントアウトすると、

FPS = 279789

なんか、とんでもない値が(笑
--------
追記。
手持ちのKEIANタブデットで、FPSを取得したら、

71.591

という中途半端な数値が表示された…。
by miries | 2015-01-07 18:30 | Android


<< WindowUpdateの不具合 USBデバッグ接続が認識されない >>