O "tempo delta" costumava ser o tempo decorrido entre duas atualizações de quadros (mas também pode ser usado em outros contextos; geralmente é o resultado de uma subtração de tempo).
Você pode obter o tempo delta em excesso usando o método glutGet e o parâmetro GLUT_ELAPSED_TIME, além de algumas operações.
A linha a seguir retorna o número de milissegundos desde que glutInit foi chamado (ou primeira chamada para glutGet (GLUT_ELAPSED_TIME)):
int timeSinceStart = glutGet(GLUT_ELAPSED_TIME);
Portanto, se você registrar o timeSinceStart atual em cada loop de renderização, poderá conhecer o deltaTime subtraindo o antigo para o novo.
int oldTimeSinceStart = 0;
while( ... )
{
int timeSinceStart = glutGet(GLUT_ELAPSED_TIME);
int deltaTime = timeSinceStart - oldTimeSinceStart;
oldTimeSinceStart = timeSinceStart;
//... stuff to update using deltaTime
}
Você também pode fazer isso quase da mesma maneira, usando a biblioteca ctime C / C ++ com clock () e a expressão constante de macro CLOCKS_PER_SEC que especifica a relação entre um tique de relógio e um segundo.
Basicamente, você pode usar deltaTime para atualizar seus movimentos na proporção desse tempo decorrido, em vez de usar um valor de tempo fixo. Dessa forma, a velocidade de movimento do seu personagem deve ser quase a mesma se o seu programa for executado a 60 qps ou se a 10 qps.
Aqui está um pequeno exemplo: suponha que você queira mover algo em 10 unidades por segundo no eixo x. Você poderia fazer algo assim (se deltaTime usar milissegundos de fato).
Position.x += 10/1000 * deltaTime;
Dessa forma, se seu programa atualizou 2 ou 100 vezes, 1 segundo depois, a posição deve ser quase a mesma e o jogo é menos impactado pelos baixos fps de um computador pequeno do que se usasse valores fixos.
Com valores fixos ==> fps baixos = menos atualizações = movimentos lentos, enquanto fps alto = mais atualizações = movimentos muito rápidos.
Com deltaTime ==> "quase" os mesmos movimentos.
Por fim, você deve ler Etapa de tempo fixo versus Etapa de tempo variável em gamedev.stackexchange.