天天看點

蔔若的代碼筆記-webgl系列-第十二章:幀率的計算1 幀率是一個非常重要的東西2 實作

1 幀率是一個非常重要的東西

1.1 舉個栗子

我們在做一款網絡遊戲,兩個角色A和B需要同步,我們設定了相同的速度100,如果沒有使用幀率去限制它一秒走的路層,那麼我這個144hz的電腦就牛逼了,我1s走14400m,而你才是60hz幀率,就會産生...你1s才走了6000m??肯定有貓病啊!

要怎麼解決呢,其實很簡單

蔔若的代碼筆記-webgl系列-第十二章:幀率的計算1 幀率是一個非常重要的東西2 實作

,就代表你我1s走的路程總是一樣的

這樣,我們就能夠完成即使我們的電腦不同,我們1s的速度總是一樣。

2 實作

var lastTime = null;
var frameTime = null;
var frameNum  = 0;
var frameRate = 0;
var count = 0;
function FrameTimer(){

    var currTime = new Date().getTime();
    var delta =(currTime - lastTime);
    frameTime = delta/1000;
    //console.info(timeToCall+"<>"+currTime);
    lastTime = currTime;
    count+= delta;
    frameNum++;
    if(count>1000){

        count  = 0;
        frameRate = frameNum;
        console.info("幀率 = "+frameNum);

        frameNum  = 0;
    }

    requestAnimationFrame(FrameTimer);

}

function getFrameTime () {

    return frameTime;

}
function getFrameRate() {
    return frameRate;
}
           
蔔若的代碼筆記-webgl系列-第十二章:幀率的計算1 幀率是一個非常重要的東西2 實作

經過驗證,該函數沒有問題!