0
這裏是我的calculateFPS功能:計算FPS的Javascript
function calculateFPS() {
const now = performance.now();
if(fps.lastCalledTime !== null) {
fps.counter++;
const secondsPerFrame = (now - fps.lastCalledTime)/1000;
fps.totalFPS += 1/secondsPerFrame;
if(fps.counter === 20) {
fps.fps = Math.round(fps.totalFPS/fps.counter);
fps.totalFPS = 0;
fps.counter = 0;
}
}
fps.lastCalledTime = now;
}
這裏是我的FPS全局對象:
let fps = {
lastCalledTime: null,
fps: 60,
counter: 0,
totalFPS: 0,
}
然而,當我看到我的遊戲放緩(遊戲是割草(如果我正確翻譯))基本上FPS應該下降...而不是它上升到400
- 500
我做錯了什麼?
預先感謝您...
我讀過後,使用Date.now()不是很好那種功能。此外,我不需要計算兩個功能之間的時間差。我需要FPS,請告訴我爲什麼當遊戲變慢時我會變大FPS?它不應該被顛倒嗎?甚至爲什麼我有時會得到FPS在400-500 FPS之間(WTF ?? 400 - 500 FPS甚至在今天的機器上都不可能)......我不滿意你的答案,所以我不把它標記爲正確答案 – durisvk10
它也適用於performance.now。你想的太複雜了,你不需要有一個每幀增加1的fps計數器。在這個例子中,以毫秒爲單位的差值除以理想情況下一幀應該採用的毫秒數,即1000/60。你可以在這裏看到一個可用的jsfiddle:https://jsfiddle.net/w4waap2p/3/根據你的環境,控制檯將顯示在59和61之間波動的fps計數。 – Kokodoko