OpenGL Moderne

Compteur de FPS

Opengl-tutorial.org

Traducteur

Alexandre Laurent

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.

Commentez

- Titre : OpenGL Moderne

- Auteur : Opengl-tutorial.org

- Traducteur : Alexandre Laurent

- Parution : 17 septembre 2014

- Licence : Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright ® 2014 opengl-tutorial.org. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- Navigation

- I. Un compteur de FPS

- II. Remerciements

- III. Navigation

Navigation

Sommaire

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.

III - Navigation

Sommaire