#bevy #frame #frame-rate #limiting #ensure #graphics #limit

bevy_framepace

为Bevy提供帧速率和帧限制

30个版本 (16个重大更新)

0.17.1 2024年7月5日
0.17.0-rc.12024年6月30日
0.15.0 2024年2月18日
0.14.1 2023年11月10日
0.3.0 2022年2月17日

#378 in 游戏开发

Download history 1088/week @ 2024-05-05 1038/week @ 2024-05-12 676/week @ 2024-05-19 1490/week @ 2024-05-26 1683/week @ 2024-06-02 1027/week @ 2024-06-09 1773/week @ 2024-06-16 579/week @ 2024-06-23 1314/week @ 2024-06-30 2274/week @ 2024-07-07 1492/week @ 2024-07-14 2454/week @ 2024-07-21 5452/week @ 2024-07-28 2635/week @ 2024-08-04 3382/week @ 2024-08-11 3818/week @ 2024-08-18

每月15,340次下载
5 个 crate使用

MIT/Apache

32KB
229

bevy_framepace⏱️

为Bevy提供帧速率和帧限制

crates.io docs.rs CI Bevy

使用方法

只需将插件添加到您的应用程序中即可

app.add_plugins(bevy_framepace::FramepacePlugin);

默认情况下,插件将自动测量您的帧速率并用于帧速率控制。

您可以通过修改FramepaceSettings资源在运行时调整帧速率限制。例如,将帧速率限制设置为30fps

settings.limiter = Limiter::from_framerate(30.0),

请参阅示例文件夹中的demo.rs,或使用以下命令运行:

cargo run --release --example demo

工作原理

该插件通过记录渲染每一帧所需的时间,并在达到期望的帧时间前让主线程休眠来工作。这确保了在最后一刻才启动下一帧,从而延迟事件循环的重新启动。通过延迟事件循环(以及输入收集),这种方法通过将读取输入的操作移至更接近渲染帧的位置来减少运动到光子延迟。

需要spin_sleep依赖项来获得精确的休眠时间。标准库中的休眠函数对于此应用来说不够精确,尤其是在Windows上。

Bevy版本支持

我打算跟踪Bevy的main分支。欢迎提交支持此分支的PR!

bevy bevy_framepace
0.14 0.17
0.13 0.15, 0.16
0.12 0.14
0.11 0.13
0.10 0.12
0.9 0.7, 0.8, 0.9, 0.10, 0.11
0.8 0.5, 0.6
0.7 0.4
0.6 0.3

许可证

bevy_framepace是免费、开源和许可宽松的!除非特别说明(以下和/或单独文件中),本存储库中的所有代码都根据您的选择在以下两种许可证下双许可

这意味着您可以选择您喜欢的许可证!这种双许可方法在Rust生态系统中被广泛采用,并且有很好的理由包含两者。

您的贡献

除非您明确说明,否则根据Apache-2.0许可证定义,您有意提交以包含在工作中的任何贡献,应按上述方式双重许可,不附加任何额外条款或条件。

依赖项

~36–73MB
~1.5M SLoC