Le "temps delta" était le temps écoulé entre deux mises à jour de trame (mais il peut également être utilisé dans d'autres contextes; c'est généralement le résultat d'une soustraction de temps).
Vous pouvez obtenir le temps delta dans glut en utilisant la méthode glutGet et le paramètre GLUT_ELAPSED_TIME, ainsi que certaines opérations.
La ligne suivante renvoie le nombre de millisecondes depuis l'appel de glutInit (ou le premier appel à glutGet (GLUT_ELAPSED_TIME)):
int timeSinceStart = glutGet(GLUT_ELAPSED_TIME);
Donc, si vous enregistrez le timeSinceStart actuel à chaque boucle de rendu, vous pouvez connaître le deltaTime en soustrayant l'ancien au nouveau.
int oldTimeSinceStart = 0;
while( ... )
{
int timeSinceStart = glutGet(GLUT_ELAPSED_TIME);
int deltaTime = timeSinceStart - oldTimeSinceStart;
oldTimeSinceStart = timeSinceStart;
//... stuff to update using deltaTime
}
Vous pouvez également le faire presque de la même manière, en utilisant la bibliothèque ctime C / C ++ avec clock () et l'expression de constante macro CLOCKS_PER_SEC qui spécifie la relation entre un tick d'horloge et une seconde.
Fondamentalement, vous pouvez utiliser deltaTime pour mettre à jour vos mouvements par rapport à ce temps écoulé au lieu d'utiliser une valeur de temps fixe. De cette façon, la vitesse de déplacement de votre personnage devrait être presque la même si votre programme tourne à 60 fps ou s'il tourne à 10 fps.
Voici un petit exemple: supposons que vous vouliez déplacer quelque chose de 10 unités par seconde sur l'axe x. Vous pourriez faire quelque chose comme ça (si deltaTime utilise en effet des millisecondes).
Position.x += 10/1000 * deltaTime;
De cette façon, que votre programme soit mis à jour 2 fois ou 100 fois, 1 seconde plus tard, la position devrait être presque la même, et le jeu est moins impacté par les faibles fps d'un petit ordinateur que s'il utilise des valeurs fixes.
Avec des valeurs fixes ==> fps faibles = moins de mises à jour = mouvements lents alors que fps élevés = plus de mises à jour = mouvements très rapides.
Avec deltaTime ==> "presque" les mêmes mouvements.
Enfin, vous devriez lire Pas de temps fixe vs Pas de temps variable sur gamedev.stackexchange.