我正在编写吉他英雄克隆游戏。它运行良好,但在快速计算机(高帧速率)下,动画并不是一直很流畅。我的意思是,有时候音符会以颠簸滚动。我发现问题可能与我的游戏循环无关,因为我正在更新传递帧时间,我认为没有必要。当发生跌落时,例如140 fps到60,这些凸起是明显的。
我看了一下这个网站:http://www.koonsolo.com/news/dewitters-gameloop/我试图实现“依赖于恒定游戏速度的FPS”方法,看看问题是否已解决。
问题是我的游戏更新和渲染稳定在60fps,而声音回调似乎被调用的远不止于此。我正在使用Audiere for Sound和SDL作为定时器/输入。
我认为SDL_Delay会暂停游戏线程直到完成,但似乎并非如此。有什么我想念的吗? SDL在时间上不是一个可靠的lib吗?
答案 0 :(得分:4)
一些示例或伪代码对于了解您正在做什么非常有帮助。来自SDL_Delay的文档:
此函数在返回之前等待指定的毫秒数。它等待 至少指定的时间,但由于OS调度可能更长。延误 粒度至少为10毫秒。有些平台的时钟周期较短,但确实如此 最常见的。
可能会拖延太多。假设您正在使用while循环,您是否尝试过“继续”减慢绘制速度?如果你执行SDL_Delay(1),可能需要更长时间,从而弄乱你的计算。
答案 1 :(得分:1)
SDL实际上非常适合游戏!它一直是我的最爱,因为它的水平令人惊讶。
您的SDL音频回调将始终被快速调用!通常你会看到以60fps渲染的视觉动画,因为这对我们的眼睛看起来很好。 PC音频通常以每小时44,100个样本运行。这需要更多的保养,以确保音频设备有样品播放! SDL将尽可能快地触发回调以防止出现音频故障。