Saat ini saya mulai belajar OpenGL di sekolah, dan saya mulai membuat permainan sederhana beberapa hari yang lalu (sendirian, bukan untuk sekolah). Saya menggunakan freeglut, dan saya sedang membuatnya dalam C, jadi untuk loop game saya, saya benar-benar baru saja menggunakan fungsi yang saya buat glutIdleFunc
untuk memperbarui semua gambar dan fisika dalam satu pass. Ini bagus untuk animasi sederhana yang saya tidak terlalu peduli tentang frame rate, tetapi karena permainan ini sebagian besar berbasis fisika, saya benar-benar ingin (perlu) mengikat seberapa cepat pembaruannya.
Jadi upaya pertama saya adalah memiliki fungsi yang saya lewati glutIdleFunc
( myIdle()
) untuk melacak berapa banyak waktu yang telah berlalu sejak panggilan sebelumnya, dan memperbarui fisika (dan saat ini grafik) setiap milidetik. Saya biasa timeGetTime()
melakukan ini (dengan menggunakan <windows.h>
). Dan ini membuat saya berpikir, apakah menggunakan fungsi idle benar-benar cara yang baik untuk melakukan loop game?
Pertanyaan saya adalah, apa cara yang lebih baik untuk mengimplementasikan loop game di OpenGL? Haruskah saya menghindari menggunakan fungsi idle?