java - 游戏开发 : How to limit FPS?

标签 java c++ algorithm frame-rate

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

我知道以微秒为单位更新游戏一帧需要多长时间,当然也知道我想要达到的 FPS。

我疯狂地寻找一个简单的例子,但我找不到....

代码可能是 Java、C++ 或伪...

最佳答案

您应该花在渲染一帧上的时间是 1/FPS 秒(如果您的目标是 10 FPS,则您应该在每一帧上花费 1/10 = 0.1 秒)。因此,如果渲染花费了 X 秒,您应该“hibernate ”1/FPS - X 秒。

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

ms_to_sleep = 1000 / FPS - elapsed_ms;

如果出于某种原因渲染帧所花费的时间超过 1/FPS,您将获得负 sleep 时间,在这种情况下您显然只是跳过了 sleep 。

关于java - 游戏开发 : How to limit FPS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3102888/

相关文章:

python - python 为什么比 C 和 C++ 运行得更快?

c++ - 使用 std::shared_ptr 的 std::map 调用 const 重载函数

c++ - std::wcout 奇怪的错误:std::wstring 的截断输出

java - 替换算法

java - 创建 HermiT 实例时出现 NoSuchMethodError

java - 并发处理严格顺序的消息

java - Eclipse 缺少已导入的必需项目

java - 如何从指向该数组的指针(在 JNA 中)提取 `struct*` 的数组?

c# - IEnumerable<T> 的最微优化和优雅的 "Insert in order"算法是什么?

arrays - 查找整数数组的子集是否存在,其所有元素的异或是否为给定值的高效算法?