2012/05/25(金) [n年前の日記]
#2 [android] drawBitmap()について実験中
SurfaceView と Canvas#drawBitmap() を使って画像を描画する際、ビットマップ画像の一部分から切り出して描画するのに、drawBitmap(Bitmap bitmap, Rect src, Rect dst, Paint paint) を使っているのだけど。
描画元範囲と描画先範囲に異なる値を指定できる、つまりは拡大縮小ができるわけで…。もしかすると、等倍で描画する場合ですら、拡大縮小処理が行われているのではないか、それが原因で描画が遅くなるのではないかと疑念が湧いた。
試しに、BG描画処理を書き直し。今までは、画面の中で見えるはずの範囲を計算して、その部分を切り出して描画していたけれど。画面より一回り大きいビットマップ画像を4枚分、画面からはみ出そうが気にせずに、そのまま描画するように書き直してみたり。
Lenovo IdeaPad A1 で確認してみたところ、切り出して描画するより、無頓着にベロンベロンと描画したほうが、数FPS速くなった。もちろん、機種によって結果が全く異なる可能性が高いのだけど。描画面積は4倍に増えているはずなのに、逆に速くなったあたりがややこしい。拡大縮小が入ってくる描画処理より、クリッピング処理のほうが軽い、ということなのかしら。わからんけど。
GLSurfaceViewなら、こんなことを気にせずに速度が稼げるのだろうか…?
描画元範囲と描画先範囲に異なる値を指定できる、つまりは拡大縮小ができるわけで…。もしかすると、等倍で描画する場合ですら、拡大縮小処理が行われているのではないか、それが原因で描画が遅くなるのではないかと疑念が湧いた。
試しに、BG描画処理を書き直し。今までは、画面の中で見えるはずの範囲を計算して、その部分を切り出して描画していたけれど。画面より一回り大きいビットマップ画像を4枚分、画面からはみ出そうが気にせずに、そのまま描画するように書き直してみたり。
Lenovo IdeaPad A1 で確認してみたところ、切り出して描画するより、無頓着にベロンベロンと描画したほうが、数FPS速くなった。もちろん、機種によって結果が全く異なる可能性が高いのだけど。描画面積は4倍に増えているはずなのに、逆に速くなったあたりがややこしい。拡大縮小が入ってくる描画処理より、クリッピング処理のほうが軽い、ということなのかしら。わからんけど。
GLSurfaceViewなら、こんなことを気にせずに速度が稼げるのだろうか…?
[ ツッコむ ]
以上です。