calendar

S M T W T F S
     12
3456789
10111213141516
17181920212223
24252627282930
<< November 2019 >>

categories

archives

FRateLimiterでフレームレートを安定させる

0
    ※環境によっては却って重くなってしまう場合があるようです。ご注意ください

    BOX2DのユーティリティGeneralの中にあるFRateLimiterの紹介です。BOX2Dに限らず使える、文字通りGeneralなクラスです。
    自分は度々このクラスのお世話になるんですが、ネットでの情報があまり出てないようなので自分用メモを兼ねて紹介してみたいと思います。

    負荷の高いコンテンツを作成するとフレームレートが落ちてしまうので、作成した内容を削ったり、コーディングを見直すなどして負荷を軽くしていき、設定フレームレートで実行できるようにするという事がよくあるのですが、その際できるだけ多くのコンテンツは残したいので、だいたいギリギリ設定フレームレート前後で動作するものが最終的に仕上がる事になります。

    この状態の際に、Flashは設定したフレームを実現できない場合、それに追いつこうとしてか瞬間的に設定FPS以上のタイミングで処理を行ったりしますが、この速いタイミングの処理がまた負荷になってメモリを消費してFPSが遅れて、という悪循環になったりします。

    そこで、指定したFPS以上のスピードでは処理をしないように設定することで、CPUの負荷を減らし、結果的に設定FPSに近い数値で安定して動作させるという時に使うのがFRateLimiterです。

    FRateLimiterは、BOX2Dをダウンロードするとオマケみたいな感じでGeneralの中に入っているstaticなクラスです。

    使い方は簡単です。まずはインポートします。
    ----------------------------------
    import General.FRateLimiter;
    ----------------------------------


    あとは、EnterFrameイベントの中に以下の通り記述するだけです。
    ----------------------------------
    FRateLimiter.limitFrame(30); //フレームレートを30に固定
    ----------------------------------


    更に、例えばフレームレートは60に設定して、limitFrameで30でリミットカットすると、より安定する場合もあるようです。

    コメント
    コメントする








       
    この記事のトラックバックURL
    トラックバック