游戏开发:如何限制FPS?

我正在写一个游戏,我看到FPS算法不能正常工作(当他需要计算更多,他睡得更久……)所以,问题很简单:如何计算睡眠时间以获得正确的FPS ?

我知道以微秒为单位更新游戏需要多长时间,当然还有我希望达到的FPS。

我正在疯狂寻找一个简单的例子,但我找不到一个……

代码可能是Java,C ++或伪….

每帧的微秒数是1000000 / frames_per_second 。 如果您知道已经花费了elapsed_microseconds ,那么您需要睡眠的时间是:

 (1000000 / frames_per_second) - elapsed_microseconds 

你应该花在渲染一帧上的时间是1/FPS秒(如果你的目标是,比如10 FPS,你应该在每帧上花费1/10 = 0.1秒)。 因此,如果需要X秒渲染,你应该“睡眠” 1/FPS - X秒。

将其转换为例如毫秒,你得到

 ms_to_sleep = 1000 / FPS - elapsed_ms; 

如果它由于某种原因需要超过1/FPS渲染帧,你将得到负的睡眠时间,在这种情况下你显然只是跳过睡眠。

尝试…

 static const int NUM_FPS_SAMPLES = 64; float fpsSamples[NUM_FPS_SAMPLES] int currentSample = 0; float CalcFPS(int dt) { fpsSamples[currentSample % NUM_FPS_SAMPLES] = 1.0f / dt; float fps = 0; for (int i = 0; i < NUM_FPS_SAMPLES; i++) fps += fpsSamples[i]; fps /= NUM_FPS_SAMPLES; return fps; } 

...根据http://www.gamedev.net/community/forums/topic.asp?topic_id=510019

看看这篇关于不同FPS处理方法的文章。