0
Voici ma fonction calculateFPS:Calcul de 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;
}
Voici mon ips objet global:
let fps = {
lastCalledTime: null,
fps: 60,
counter: 0,
totalFPS: 0,
}
Cependant quand je vois mon jeu ralentir (le jeu est Tondre (si je l'ai traduit correctement)) fondamentalement le FPS devrait descendre ... à la place il va jusqu'à 400
- 500
Je fais quelque chose de mal ?
Merci à l'avance ...
J'ai lu le message que l'utilisation Date.now() n'est pas bon en ce genre de fonction. Aussi, je n'ai pas besoin de calculer le décalage horaire entre deux fonctions. J'ai besoin de FPS et dites-moi pourquoi je reçois des FPS plus gros quand le jeu ralentit? Ne devrait-il pas être inversé? Et même pourquoi ai-je parfois des FPS entre 400 - 500 FPS (WTF ?? 400 - 500 FPS n'est même pas possible sur la machine d'aujourd'hui) ... Je ne suis pas satisfait de votre réponse donc je ne la marque pas comme bonne réponse – durisvk10
Il fonctionne également avec performance.now. Vous pensez trop compliqué, vous n'avez pas besoin d'avoir un compteur fps qui ajoute 1 chaque image. Dans cet exemple, la différence en millisecondes est divisée par la quantité de millisecondes qu'une trame doit prendre dans une situation idéale, soit 1000/60. Vous pouvez voir un jsfiddle fonctionnant ici: https://jsfiddle.net/w4waap2p/3/ La console montrera un nombre de fps fluctuant entre 59 et 61 selon votre environnement. – Kokodoko