#constant #frame-rate #timer #clock #effort #iterator #fps

ticktock

最佳努力常帧率时钟和快速计时器

18 个版本

0.8.0 2020年3月3日
0.7.0 2018年6月20日
0.6.0 2018年3月11日
0.4.0 2017年7月14日
0.2.2 2016年3月14日

#5#effort


用于 3 个crate(通过 process_guard

MIT 许可证

23KB
434

帧时钟和计时器

ticktock 使访问帧时序迭代器以实现常帧率变得非常容易

// run with a constant framerate of 30 fps
for (tick, now) in Clock::framerate(30.0).iter() {
  // ...
}

详细信息请参阅文档


lib.rs:

基于帧的应用程序计时模块

包含降低到固定帧率的以及测量实际帧率的函数。

一个示例游戏循环

use std::time;
use ticktock::{Clock, Timer};

let now = time::Instant::now();

// initialize game
// ...

// show some fps measurements every 5 seconds
let mut fps_counter = Timer::apply(|delta_t, prev_tick| (delta_t, *prev_tick), 0)
    .every(time::Duration::from_secs(5))
    .start(now);

// run with a constant framerate of 30 fps
for (tick, now) in Clock::framerate(30.0).iter() {
    // this loop will run approx. every 33.3333 ms

    // update, render, etc
    // ...

    // update or display fps count
    if let Some((delta_t, prev_tick)) = fps_counter.update(now) {
        fps_counter.set_value(tick);

        let fps = (tick - prev_tick) as f64 / delta_t.as_secs_f64();
        println!("FPS: {}", fps);
    }
    break; // ignore, for doctests
}

无运行时依赖