1
3
不要用帧速率来测量时间。用时间来衡量时间。GC通过可能需要3/10秒,其他任务可能在后台启动等。 总有一个系统/设置运行速度比您想象的要慢。 然后不指定以像素为单位的速度,而是以像素/秒为单位。每一帧动画都需要一定的时间等。在游戏引擎中,当计算下一帧时,您的输入之一是“自上一帧以来经过了多少时间”。你将这个值确定为一秒的分数,然后用你的速度/秒乘以这个分数。结果是,从上一帧开始,给定的对象移动了多远。 请注意,真正缓慢的帧速率会对碰撞检测造成严重破坏,特别是对于快速移动的物体。如果物体1在两帧之间完全穿过物体2,只需检查bbox或radii就不会切割它。
说了这么多,sleep()是你的朋友。在帧处理开始时,调用
所以如果你想要最大20帧,那么每帧需要50毫秒(1000毫秒/20=50毫秒)。如果一个帧只需要10毫秒来模拟和渲染,那么在继续下一帧之前,您需要再睡上一个(50毫秒-10毫秒=)40毫秒。 或者,您可以继续尽可能快地运行模拟,并且只每隔一段时间渲染一次屏幕。这对电池寿命没有太大帮助(尽管OpenGL硬件加速很昂贵,如果我的EVO发出的热量是任何迹象的话),但可以使体验非常顺利。见鬼,你可以从那开始计算运动模糊。 |
Daniel · 使对象每X秒“闪烁” 6 年前 |
ninbura · ffmpeg-时间码和分数帧速率(复制帧) 6 年前 |
Ido Sofi · 固定时间步游戏循环中的帧速率封顶-Java 7 年前 |
PÅemysl Novák · 单博弈-等距图块,大地图上的低FPS 7 年前 |
kikujiang · 如何在android设备中获取游戏的fps值 8 年前 |
Athan Clark · GPipe VSync和FPS 9 年前 |
Snhp9 · 为什么我不能加两个双打 9 年前 |