Intro :
Dans les jeux ou les applications graphiques il peut être utile de savoir combien d’images par seconde sont affichées à l’écran pendant le rendu.
Prérequis :
– Savoir initialiser DirectX 10.1
Explications :
Voici le code pour calculer le temps de rafraichissement par seconde, cette méthode devra être appelée à chaque boucle de rendu.
Il est calculé aussi le temps que met, à peu près, le rendu pour afficher une image.
void CalculateFPS(float fTimeSinceLastFrame)
{
/* Incrèmente le nombre d'images affichées.
/!\ Doit être déclarée en tant que float et initialisée à 0 au début
de l'application */
m_fNumFrames += 1.0f;
/* Ajoute combien de temps s'est passé depuis la dernière
image de rendu
/!\ Doit être déclarée en tant que float et initialisée à 0 au début
de l'application */
m_fTimeElapsed += fTimeSinceLastFrame;
float iFPS = 0;
float iMilliSecPerFrame = 0;
// Lorsqu'une seconde s'est écoulée
if (m_fTimeElapsed >= 1.0f)
{
iFPS = m_fNumFrames / m_fTimeElapsed;
// Temps moyen, en milisecondes, pour qu'une seule image soit rendue
iMilliSecPerFrame = 1000.0f / iFPS;
/* Réinitialise le compteur d'images et le compteur de temps entre
chaque image */
m_fTimeElapsed = 0.0f;
m_fNumFrames = 0.0f;
/* On place les nombres dans une chaîne représentant les statistiques
formatées */
static char buffer[256];
sprintf(buffer, "Images par seconde = %.2f | "
"Millisecondes par image = %.4f", iFPS, iMilliSecPerFrame);
// On met à jour le titre de la fenêtre
SetWindowTextA(m_hWnd, buffer);
}
}
Résumé :
Nous avons présenté comment calculer le FPS (Images par seconde) dans une application de rendu.
Références :
Introduction to DirectX 9.0c – A shader approach – Franck D. Luna

