2

ゲームループを次のように設定します。

    window.requestAnimFrame = (function(){
        return  window.requestAnimationFrame   ||
            window.webkitRequestAnimationFrame ||
            window.mozRequestAnimationFrame    ||
            window.oRequestAnimationFrame      ||
            window.msRequestAnimationFrame     ||
            function( callback ){
                window.setTimeout(callback, 1000 / 60);
            };
    })();
    (function gameLoop() {
        var time                =   new Date().getTime();
        var dt                  =   (time - prevFTime) / 1000.0;
        prevFTime               =   time;

        state.effectsOn         =   dt > 1 / 60.0 ? true : false;
        state.effectsOn         =   false;

        //game rendering logic goes here

        window.requestAnimFrame(gameLoop);
    })();

ここで私がやりたいのは、effectsOnフレームレートが良好なために変数が設定されている場合、ゲームでいくつかの特殊効果をレンダリングすることです。そうでない場合は、これらの特殊効果のレンダリングをスキップします。

しかし、私の明らかな問題は、ifdt>1/60とeffectsOnがtrueに設定されていることです。レンダリング時間が長くなる特殊効果をレンダリングするdt < 1/60ので、effectsOnをfalseにする可能性があります。

私がやろうとしていることを達成するための良い代替方法はありますか?

最悪の場合、メインメニューにチェックボックスのようなものを配置して、ユーザーに特殊効果をレンダリングするかどうかを決定させることができます...

4

1 に答える 1

2

最初は特殊効果をオンのままにしておきます。

最初のnフレームの後で平均レンダリング時間が長すぎる場合は、それらをオフにして、オフのままにします。

于 2012-05-30T11:20:24.233 に答える