【发布时间】:2014-08-10 12:31:51
【问题描述】:
我在 Playground 项目中使用 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 不是一个好建议 ;)
【问题讨论】:
-
SDL_GetTicks是毫秒级的分辨率,因此对于高 fps,差异将大部分为零(从某种意义上说是四舍五入,但应该累积并偶尔为一) .确保你只使用一个电话,所以cur=get();diff=cur-last;last=cur;。更高分辨率的计时方法也可能会有所帮助。