1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
use std::time::Instant; pub struct FPS { counter: u32, timeout: f32, time: f32, last: Instant, } impl FPS { pub fn new(timeout: f32) -> Self { FPS{counter: 0u32, timeout, time: 0f32, last: Instant::now()} } pub fn increase(&mut self, mut delta: f32) -> f32 { if delta <= 0f32 { delta = Instant::elapsed(&self.last).as_secs_f32(); self.last = Instant::now(); } self.time += delta; self.counter += 1; if self.time > self.timeout { println!("fps:{}", self.counter as f32 / self.timeout); self.time = 0f32; self.counter = 0; } delta } }