1
这里是我已经实现到我的Android应用程序的gameloop代码。封顶帧率 -
它工作的很好,但是我遇到的问题是,尽管它在30处限制逻辑更新 - 实际渲染运行平稳,这显然对电池寿命并不好。
我不能解决如何限制/限制渲染到一个固定的数量(比如说30个左右的FPS)。
具体来说,渲染应该只在逻辑更新而不是渲染冗余帧时(即没有发生逻辑更新时)渲染。
编辑:我刚刚添加了代码的插值部分 - 这可能会导致问题,当我根据@Geobits推荐的帧限制帧?
int TICKS_PER_SECOND = 30;
int SKIP_TICKS = 1000/TICKS_PER_SECOND;
int MAX_FRAMESKIP = 10;
long next_game_tick = GetTickCount();
int loops;
bool game_is_running = true;
while(game_is_running) {
loops = 0;
while(GetTickCount() > next_game_tick && loops < MAX_FRAMESKIP) {
update_game();
next_game_tick += SKIP_TICKS;
loops++;
}
interpolation = float(GetTickCount() + SKIP_TICKS - next_game_tick)
/float(SKIP_TICKS);
display_game(interpolation);
}
谢谢@Geobits,我实现了这个,它确实有效(确认渲染和游戏更新每秒发生的次数相同),但它会导致我的精灵出现“痉挛” - 你有什么想法可能会导致这种情况如何避免它?再次感谢 – Zippy 2013-02-24 02:19:00