• 05 «
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • » 07
ASOK?
ActionScriptでFlashつくるよ
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
page top

BitmapData.copyPixels()で描画するとき、クリップ処理が入ってるらしくターゲットBitmapDataの外側に描画する場合は処理が軽くなる。当たり前か。

  • 描画パフォーマンスは、実際の描画面積に比例する(ようだ)。
  • gifよりpngの方が早い。
  • mergeAlphaパラーメタは(意外にも)ほとんど影響を与えない。
  • if文によるクリップはパフォーマンス向上の可能性あり。
  • Rectangle.intersection()によるクリップはむしろ遅くなる。

以下実験結果。

小さなBitmapDataを描画する場合

1024x1024の表示バッファに、32x32のbmpを毎フレーム4000個描画する。
FPS=99に設定し、StatsでFPSを計測。

コードはこんな感じ。

全部描画する場合

destPoint.x = Math.floor(Math.random()*WIDTH);
destPoint.y = Math.floor(Math.random()*HEIGHT);
  デフォルト mergeAlpha
=false
座標判定つき
gif 25fps 25fps 25fps
png 19fps (未計測) 20fps

半分描画する場合

destPoint.x = Math.floor(Math.random()*WIDTH*2);
destPoint.y = Math.floor(Math.random()*HEIGHT);
  デフォルト mergeAlpha
=false
座標判定つき
gif 31-32fps (未計測) 34fps
png 27fps (未計測) 28fps

全部外側に描画(=描画しない)場合

destPoint.x = Math.floor(Math.random()*WIDTH)+WIDTH;
destPoint.y = Math.floor(Math.random()*HEIGHT)+HEIGHT;
  デフォルト mergeAlpha
=false
座標判定つき
gif 55fps 55fps 58fps
png 50fps 50fps 58fps

大きなBitmapDataを描画する場合

1024x1024の表示バッファに、2880x2880のbmpを毎フレーム40回copyPixels()。
FPS=99に設定し、StatsでFPSを計測。

全部描画する場合

  デフォルト mergeAlpha
=false
jpg 7fps 7fps

全部外側に描画(=描画しない)場合

  デフォルト mergeAlpha
=false
jpg 73fps 69fps
関連記事
page top

コメント

管理者にだけ表示を許可する
 

トラックバック
TB*URL
Copyright © 2005 ASOK?. all rights reserved.

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。