- let now = Instant::now();
- frame_cnt += 1;
- accum_idle_time += time_before_draw - time_before_swap;
- accum_draw_time += time_after_draw - time_before_draw;
- if now - last_report_time > Duration::from_secs(5) {
- fn millis(d : Duration) -> f32 {
- d.as_secs() as f32 * 1e3 + d.subsec_nanos() as f32 / 1e6
- }
- let frames_done = frame_cnt - last_report_frame_cnt;
- let fps = frames_done as f32 / (now - last_report_time).as_secs() as f32;
- let avg_draw_time = millis(accum_draw_time / frames_done);
- let avg_idle_time = millis(accum_idle_time / frames_done);
- println!("fps={:.1} draw={:.1}ms idle={:.1}ms", fps, avg_draw_time, avg_idle_time);
-
- last_report_time = now;
- last_report_frame_cnt = frame_cnt;
- accum_draw_time = Duration::new(0, 0);
- accum_idle_time = Duration::new(0, 0);
- }
-
- if !pause {
- // Increment time
- t += 0.01;
- }