MD5 анимация и игровой цикл - PullRequest
2 голосов
/ 07 марта 2019

Я реализовал загрузку модели MD5 со скелетной анимацией, и она отлично работает. Сейчас я пытаюсь улучшить игровой цикл, чтобы все прошло гладко и правильно выбрал время. Я читал о различных игровых циклах, а затем реализовал лучший, который читал по следующему сценарию:

accumulatedTime += timer.elapsed();
nLoops = 0;
processInputs();
while (accumulatedTime >= dt && nLoops < maxSkipFrames)
{    
    updateGame(dt/20.0);
    accumulatedTime -= dt;
    nLoops++;
}
timer.reset();

Я реализую скелетную анимацию ЦП, чтобы обновлять все вершины и нормали в каждом кадре. метод updateGame(dt) обновляет вершины меша на основе анимации скелета, это должно занять некоторое время и добавить его к времени анимации для обновления вершин. в моей реализации игрового цикла есть что-то не так, что скорость обновления на разных устройствах различается. Я использую OpenGL с C ++ на Android.

1 Ответ

2 голосов
/ 07 марта 2019

Не удивительно, что он работает с разной частотой кадров на разных устройствах, так как некоторые быстрее , чем другие.Чтобы сделать его всегда 60 кадров в секунду, каждый кадр должен длиться 16 мс, поскольку некоторые устройства могут обрабатывать цикл обновления за меньшее время, это может занять около 10 мс (в этой ситуации может потребоваться 6 мс в конце кадра)и в других устройствах это может занять 17 мс (насколько я знаю, здесь вы ничего не можете сделать).

Об этом можно прочитать в Паттернах программирования игр книга( Game Loop * глава 1008 *), которая доступна онлайн для свободного чтения.Но эта книга настолько популярна, что, я думаю, вы уже посмотрели ее : p , но все равно стоит упомянуть об этом.

...