There was a bug that buffer fade amount was relative to the time it
took to run one simulation step, not relatively to the time interval
between two drawn frame. This patch fixes the issue.
Signed-off-by: Timo Kokkonen <kaapeli@itanic.dy.fi>
int last_framecount = 0, last_step_count = 0;
unsigned long old_ticks, ticks = 0, last_frame_tick = 0;
unsigned long step_count = 0;
int last_framecount = 0, last_step_count = 0;
unsigned long old_ticks, ticks = 0, last_frame_tick = 0;
unsigned long step_count = 0;
- double last_fps = 0, last_sps = 0;
+ double last_fps = 0, last_sps = 0, fade_amount;
double step_time = 0, true_time = 0;
init_camera(&camera);
double step_time = 0, true_time = 0;
init_camera(&camera);
if (last_frame_tick + (1000 * 1000) / MAX_FPS > ticks)
continue;
if (last_frame_tick + (1000 * 1000) / MAX_FPS > ticks)
continue;
- last_frame_tick = ticks;
-
SDL_LockSurface(screen);
if (status.tracers_enabled &&
!camera.speed.x && !camera.speed.y &&
camera.zoom_rate == 1) {
SDL_LockSurface(screen);
if (status.tracers_enabled &&
!camera.speed.x && !camera.speed.y &&
camera.zoom_rate == 1) {
- fade_buf(screen, 10 * true_time);
+ fade_amount = (ticks - last_frame_tick) /
+ (1000 * 1000.0) * 20;
+ fade_buf(screen, fade_amount);
} else {
clear_buf(screen);
}
} else {
clear_buf(screen);
}
+ last_frame_tick = ticks;
+
if (last_fps_time + (500 * 1000) < ticks) {
last_framecount = framecount - last_framecount;
last_fps = last_framecount * 1000 * 1000 /
if (last_fps_time + (500 * 1000) < ticks) {
last_framecount = framecount - last_framecount;
last_fps = last_framecount * 1000 * 1000 /