El "tiempo delta" solía ser el tiempo transcurrido entre dos actualizaciones de trama (pero también se puede usar en otros contextos; esto generalmente es el resultado de una resta de tiempo).
Puede obtener el tiempo delta en glut utilizando el método glutGet y el parámetro GLUT_ELAPSED_TIME, más algunas operaciones.
La siguiente línea devuelve el número de milisegundos desde que se llamó a glutInit (o la primera llamada a glutGet (GLUT_ELAPSED_TIME)):
int timeSinceStart = glutGet(GLUT_ELAPSED_TIME);
Entonces, si registra el tiempo actualSinceStart en cada bucle de representación, puede conocer el tiempo delta restando el antiguo al nuevo.
int oldTimeSinceStart = 0;
while( ... )
{
int timeSinceStart = glutGet(GLUT_ELAPSED_TIME);
int deltaTime = timeSinceStart - oldTimeSinceStart;
oldTimeSinceStart = timeSinceStart;
//... stuff to update using deltaTime
}
También puede hacerlo casi de la misma manera, utilizando la biblioteca C / C ++ ctime con clock () y la expresión de macro constante CLOCKS_PER_SEC que especifica la relación entre un tic del reloj y un segundo.
Básicamente, puede usar deltaTime para actualizar sus movimientos en proporción a este tiempo transcurrido en lugar de usar un valor de tiempo fijo. De esta manera, la velocidad de movimiento de tu personaje debería ser casi la misma si tu programa se ejecuta a 60 fps o si se ejecuta a 10 fps.
Aquí hay un pequeño ejemplo: suponga que desea mover algo 10 unidades por segundo en el eje x. Podría hacer algo como esto (si deltaTime usa milisegundos).
Position.x += 10/1000 * deltaTime;
De esta manera, ya sea que su programa se actualice 2 o 100 veces, 1 segundo después, la posición debería ser casi la misma, y el juego se ve menos afectado por los bajos fps de una computadora pequeña que si usa valores fijos.
Con valores fijos ==> fps bajo = menos actualizaciones = movimientos lentos, mientras que fps alto = más actualizaciones = movimientos muy rápidos.
Con deltaTime ==> "casi" los mismos movimientos.
Finalmente, debe leer el paso de tiempo fijo frente al paso de tiempo variable en gamedev.stackexchange.