"Waktu delta" dulunya adalah waktu yang berlalu antara dua pembaruan bingkai (tetapi juga dapat digunakan dalam konteks lain; ini biasanya merupakan hasil dari pengurangan waktu).
Anda bisa mendapatkan waktu delta dalam kekenyangan menggunakan metode glutGet dan parameter GLUT_ELAPSED_TIME, ditambah beberapa operasi.
Baris berikut mengembalikan jumlah milidetik sejak glutInit dipanggil (atau panggilan pertama ke glutGet (GLUT_ELAPSED_TIME)):
int timeSinceStart = glutGet(GLUT_ELAPSED_TIME);
Jadi, jika Anda mendaftarkan timeSinceStart saat ini di setiap loop rendering, Anda dapat mengetahui deltaTime dengan mengurangi yang lama ke yang baru.
int oldTimeSinceStart = 0;
while( ... )
{
int timeSinceStart = glutGet(GLUT_ELAPSED_TIME);
int deltaTime = timeSinceStart - oldTimeSinceStart;
oldTimeSinceStart = timeSinceStart;
//... stuff to update using deltaTime
}
Anda juga dapat melakukannya dengan cara yang hampir sama, menggunakan C / C ++ ctime library dengan clock () dan ekspresi konstan makro CLOCKS_PER_SEC yang menentukan hubungan antara centang jam dan detik.
Pada dasarnya, Anda dapat menggunakan deltaTime untuk memperbarui gerakan Anda sesuai dengan waktu yang telah berlalu ini daripada menggunakan nilai waktu tetap. Dengan cara ini, kecepatan gerakan karakter Anda harus hampir sama jika program Anda berjalan pada 60 fps atau jika berjalan pada 10 fps.
Ini adalah contoh kecil: misalkan Anda ingin memindahkan sesuatu sebanyak 10 unit setiap detik pada sumbu x. Anda dapat melakukan sesuatu seperti ini (jika deltaTime memang menggunakan milidetik).
Position.x += 10/1000 * deltaTime;
Dengan cara ini, apakah program Anda diperbarui 2 kali atau 100 kali, 1 detik kemudian posisinya harus hampir sama, dan permainan-nya kurang terpengaruh oleh fps rendah komputer kecil daripada jika menggunakan nilai tetap.
Terakhir, Anda harus membaca Langkah waktu tetap vs Langkah waktu variabel di gamedev.stackexchange.