Skip to content

Commit a61e50f

Browse files
committed
frame rate
1 parent 97f6223 commit a61e50f

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

src/app/main_loop.rs

+16
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,18 @@ use crate::dummy_audio;
77

88
impl App {
99
pub fn main_loop(&mut self) {
10+
let config = &self.config;
11+
let frame_rate = config.frame_rate.unwrap();
12+
1013
// events
1114
let mut event_pump = self.sdl_context.event_pump().unwrap();
15+
let mut timer = self.sdl_context.timer().unwrap();
1216

1317
// renderLoop
1418
'running: loop {
19+
// get start time
20+
let start_time = timer.ticks();
21+
1522
// check for event
1623
for event in event_pump.poll_iter() {
1724
match event {
@@ -82,6 +89,15 @@ impl App {
8289

8390
// swap buffers
8491
self.window.gl_swap_window();
92+
93+
if frame_rate > 0 {
94+
// calculate frame time
95+
let frame_time = timer.ticks() - start_time;
96+
if frame_time < 1000 / frame_rate {
97+
// sleep the remaining frame time
98+
timer.delay(1000 / frame_rate - frame_time);
99+
}
100+
}
85101
}
86102
}
87103
}

0 commit comments

Comments
 (0)