Navigation▲
I. Un compteur de FPS▲
Dans le monde des graphismes en temps réel, il est important de garder un œil sur les performances. Une bonne pratique est de déterminer un nombre de FPS comme objectif (habituellement 60 ou 30) et faire tout son possible pour s'y tenir.
Un compteur de FPS ressemble à cela :
double
lastTime =
glfwGetTime();
int
nbFrames =
0
;
do
{
// Mesure la vitesse
double
currentTime =
glfwGetTime();
nbFrames++
;
if
( currentTime -
lastTime >=
1.0
){
// Si le dernier prinf() a été réalisé il y a plus d'une seconde
// printf et réinitialise le chronomètre
printf("%f ms/frame
\n
"
, 1000.0
/
double
(nbFrames));
nbFrames =
0
;
lastTime +=
1.0
;
}
... la suite de la boucle principale
Il y a une chose étrange dans ce code. Il affiche le temps, en millisecondes, nécessaire pour afficher une image (la moyenne sur une seconde) au lieu du nombre d'images dessinées durant la dernière seconde.
En fait, c'est beaucoup mieux. Ne faites pas confiance aux FPS. FramePerSecond = 1/SecondPerFrame, ce qui est une proportionnelle inverse et les humains sont nuls pour comprendre ce genre de proportionnelle. Prenez un exemple : vous écrivez une superbe fonction de rendu qui fonctionne à 1000 FPS (1ms/image), mais vous oubliez un petit calcul dans le shader, qui ajoute un coût de 0,1 ms. Et bam, 1/0.0011 = 900, vous venez de perdre 100 FPS. Moralité : n'utilisez jamais les FPS pour des analyses de performances.
Si vous prévoyez de faire un jeu fonctionnant à 60 FPS, votre objectif sera 16,6666 ms ; si vous prévoyez de faire un jeu fonctionnant à 30 FPS, votre objectif sera 33,3333 ms. C'est tout ce que vous devez savoir.
Ce code est disponible dans tous les tutoriels à partir du neuvième : indexation VBO ; regardez le fichier tutorial09_vbo_indexing/tutorial09.cpp. D'autres outils pour les performances sont disponibles dans la page Outils - débogueurs.
II. Remerciements▲
Cet article est une traduction autorisée dont le texte original peut être trouvé sur opengl-tutorial.org.