我正在构建一个2d OpenGL es应用程序对于iPad,它会在其上显示背景纹理和众多纹理,这些纹理始终处于运动状态。
根据时间差和速度重新计算每个帧的位置,并且整个事物成功地以60 fps渲染,但是当精灵的移动速度提升时,事情看起来很卡顿。
有什么想法吗?我正在做什么继承问题?是否有已知的平滑动画设计模式?
答案 0 :(得分:0)
尝试将时间增量计算为最后N帧的平均值,因为有些帧可能比其他帧花费更多时间。你是否使用时间增量动画?使用它非常重要!还尝试在加载时加载所有资源,而不是在使用它们时加载它们。这也可能会减慢一些帧。
答案 1 :(得分:0)
如果你看一下时间增量,你可能会发现它们的帧到框架不是很一致。这可能不是因为帧渲染所花费的时间不同,它只是GLES驱动程序的批处理,流水线特性的工件。
尝试使用时间增量的某种移动平均值:http://en.wikipedia.org/wiki/Moving_average
请注意,即使你在应用程序中观察到的时间增量不是很一致,你得到60fps的事实意味着帧可能会以固定的间隔显示(我假设你已经得到了每个显示一帧v-sync)。这意味着您进行GL调用的应用程序与显示在屏幕上的结果帧之间的延迟正在发生变化。正是这种变化,你试图隐藏移动平均线。