В настоящее время я начинаю изучать OpenGL в школе, и на днях я начал делать простую игру (самостоятельно, а не для школы). Я использую freeglut и собираю его на C, поэтому для своего игрового цикла я действительно использовал переданную мне функцию, glutIdleFunc
чтобы обновить все чертежи и физику за один проход. Это было хорошо для простых анимаций, которые меня не особо волновали по частоте кадров, но поскольку игра в основном основана на физике, я действительно хочу (нужно) связать, насколько быстро она обновляется.
Поэтому моя первая попытка состояла в том, чтобы мою функцию я передал glutIdleFunc
( myIdle()
), чтобы отслеживать, сколько времени прошло с момента его предыдущего вызова, и обновлять физику (и текущую графику) каждые миллисекунды. Я timeGetTime()
делал это (используя <windows.h>
). И это заставило меня задуматься, действительно ли использование функции простоя является хорошим способом прохождения игрового цикла?
Мой вопрос: как лучше реализовать игровой цикл в OpenGL? Следует ли мне избегать использования функции ожидания?