Obecnie zaczynam uczyć się OpenGL w szkole, a pewnego dnia zacząłem tworzyć prostą grę (na własną rękę, nie dla szkoły). Używam freeglut i buduję go w C, więc w mojej pętli gry naprawdę korzystałem właśnie z funkcji, którą przekazałem, glutIdleFunc
aby zaktualizować cały rysunek i fizykę za jednym przejściem. To było w porządku dla prostych animacji, które nie przejmowały się zbytnio liczbą klatek na sekundę, ale ponieważ gra jest oparta głównie na fizyce, naprawdę chcę (muszę) powiązać, jak szybko się aktualizuje.
Tak więc moją pierwszą próbą było przekazanie mojej funkcji do glutIdleFunc
( myIdle()
), aby śledzić, ile czasu minęło od poprzedniego wywołania, i aktualizować fizykę (i obecnie grafikę) co tyle milisekund. Zwykłem timeGetTime()
to robić (za pomocą <windows.h>
). I to sprawiło, że pomyślałem, czy korzystanie z funkcji bezczynności jest naprawdę dobrym sposobem na obejście pętli gry?
Moje pytanie brzmi: jaki jest lepszy sposób na implementację pętli gry w OpenGL? Czy powinienem unikać korzystania z funkcji bezczynności?