3

我正在编写一个吉他英雄克隆游戏。它工作得很好,但在快速计算机(高帧率)中,动画并不总是流畅。我的意思是,有时音符滚动时会有颠簸。我发现这个问题可能与我的游戏循环有关,它不限制 fps(因为我正在更新经过的帧时间,我认为这没有必要)。当从 140 fps 下降到 60 fps 时,这些颠簸很明显。

我看了一下这个网站:http ://www.koonsolo.com/news/dewitters-gameloop/我正在尝试实施“FPS 依赖于恒定游戏速度”的方法只是为了看看问题是否得到解决。

问题是我的游戏更新和渲染稳定在 60fps,而声音回调似乎远不止于此。我将 Audiere 用于声音,将 SDL 用于计时器/输入。

我以为 SDL_Delay 会暂停游戏线程直到完成,但似乎并非如此。有什么我想念的吗?SDL 在时间上不是一个可靠的库吗?

4

2 回答 2

4

一些示例或伪代码将非常有助于了解您在做什么。从 SDL_Delay 的文档中:

此函数在返回之前等待指定的毫秒数。它至少会等待指定的时间,但由于操作系统调度,它可能会等待更长时间。延迟粒度至少为 10 ms。一些平台的时钟滴答声更短,但这是最常见的。

可能耽误太多了。假设您正在使用 while 循环,您是否尝试过“继续”减慢绘制速度?如果您执行 SDL_Delay(1) 可能会花费更长的时间,从而打乱您的计算。

于 2012-04-05T22:41:29.473 回答
1

SDL 实际上非常适合游戏!它一直是我的最爱,因为它的水平出奇的低。

您的 SDL 音频回调总是会很快被调用!通常你会看到以 60fps 渲染的视觉动画,因为这对我们的眼睛来说看起来不错。PC 音频通常以 44,100 个样本/秒的速度运行。这需要更多的维护,以确保音频设备可以播放样本!SDL 将尽可能快地触发回调,以防止音频故障。

于 2012-04-05T22:21:23.600 回答