我想实现一个特殊的游戏循环,其中游戏实际上每秒仅更新25帧,同时以最高速度渲染计算机。我跟着露水游戏循环的文章并正确地进行了插值设置我相信(顺便说一句,我使用的是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);
但这只是使主角精灵抖动到处都是。任何帮助表示赞赏!