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 回答