2017-07-24 12 views
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 ...

Répondre

0

Vous pouvez calculer la différence de temps entre deux appels de fonction en tant que telle

let then = performance.now(); 
let now; 
let frame = 1000/60; 

function animate() { 

    now = performance.now(); 
    console.log(((now - then)/frame) * 60); 
    then = now; 

} 

setInterval(animate, frame); 
+0

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

+0

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