SDL FPS输入延迟

时间:2011-11-04 18:18:24

标签: graphics time input sdl

我在我的游乐场项目中使用SDL,我有点担心我的PC性能 - 它太高或者我只是在游荡。

问题是,当我在键盘上的键关闭时更改某些精灵的坐标时,例如2 px,精灵移动得太快。同样适用于1 px速度。

通常(在SFML中)我会进行下一个速度变化:1.f / App->GetTimeSinceLastFrame()并且它完美地运行!但现在我想使用SDL。而且我不能选择延迟,因为它们在不同的PC上是不相同的(这是一种非常难看的方式)或浮动值转换,因为下一个原因。

执行lastTicks = SDL_GetTicks()然后使用1.f / (float) SDL_GetTicks() - lastTicks()做坏事 - 差异总是。所以要么我弄错了,要么两帧之间的时间太短,以至于它被四舍五入为0

任何人都可以给我一个建议我应该怎么做?

注意: 将SDL更改为xxx 不是一个好建议;)

1 个答案:

答案 0 :(得分:2)

超过60 fps(显示器刷新率)没有意义。你只是在浪费CPU时间。如果您的游戏运行得太快,请致电SDL_Delay

    int delay=1000/maxFPS-SDL_GetTicks()+lastTicks;

    if(delay>0)
        SDL_Delay(delay);