我在我的游乐场项目中使用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 不是一个好建议;)
答案 0 :(得分:2)
超过60 fps(显示器刷新率)没有意义。你只是在浪费CPU时间。如果您的游戏运行得太快,请致电SDL_Delay
。
int delay=1000/maxFPS-SDL_GetTicks()+lastTicks;
if(delay>0)
SDL_Delay(delay);