Я хотел реализовать специальный игровой цикл, в котором игра фактически обновляет только 25 кадров в секунду, в то время как она воспроизводится с максимальной скоростью компьютера.Я следовал за статьей из цикла игры dewitters и правильно настроил интерполяцию, я полагаю (кстати, я использую sdl2) ...
const int TICKS_PER_SECOND = 25;
const int SKIP_TICKS = 1000 / TICKS_PER_SECOND;
const int MAX_FRAMESKIP = 5;
Uint32 next_game_tick = SDL_GetTicks();
int loops;
float interpolation;
while (running)
{
loops = 0;
while (SDL_GetTicks() > next_game_tick && loops < MAX_FRAMESKIP)
{
Update();
next_game_tick += SKIP_TICKS;
loops++;
}
interpolation = float(SDL_GetTicks() + SKIP_TICKS - next_game_tick) / float(SKIP_TICKS);
Render(interpolation);
}
Но я не совсем понимаю, как реализовать интерполяцию внутрисделать звонок.я попытался просто установить координаты x и y моего спрайта относительно интерполяции ...
interPos.x = pos.x + int (speed * interpolation);
interPos.y = pos.y + int (speed * interpolation);
link.Draw(ren, interPos, 0, false);
, но это только вызвало дрожание спрайта главного персонажа.Любая помощь приветствуется!