+
+ double cpu_frame = scr.GetLastFrameTimeCPU();
+ double gpu_frame = scr.GetLastFrameTimeGPU();
+ clock_gettime(CLOCK_MONOTONIC_RAW, &real_clock_now);
+ double real_frame = (real_clock_now.tv_sec - real_clock_prev.tv_sec) + 1e-9*(real_clock_now.tv_nsec - real_clock_prev.tv_nsec);
+
+
+ total_real_time += real_frame; total_cpu_time += cpu_frame; total_gpu_time += gpu_frame;
+ if (data_rate > 0 && total_real_time > data_rate*(data_points+1))
+ {
+ printf("%lu\t%f\t%f\t%f\t%f\t%f\t%f\n", (long unsigned int)frames, total_real_time, total_cpu_time, total_gpu_time, real_frame, cpu_frame, gpu_frame);
+ data_points++;
+ }
+
+ scr.DebugFontPrintF("View Width = %s m\n", Str(view.GetBounds().w * VReal(22e-3)).c_str());
+ scr.DebugFontPrintF("Similar size: %s\n", HumanScale(view.GetBounds().w * VReal(22e-3)));
+
+ #if 0
+ scr.DebugFontPrintF("Rendered frame %lu\n", (uint64_t)frames);
+ scr.DebugFontPrintF("Lazy Rendering = %d\n", view.UsingLazyRendering());
+ if (cpu_frame > 0 && total_cpu_time > 0)
+ scr.DebugFontPrintF("[CPU] Render took %lf ms (%lf FPS) (total %lf s, avg FPS %lf)\n", cpu_frame*1e3, 1.0/cpu_frame, total_cpu_time,frames/total_cpu_time);
+ if (gpu_frame > 0 && total_gpu_time > 0)
+ scr.DebugFontPrintF("[GPU] Render took %lf ms (%lf FPS) (total %lf s, avg FPS %lf)\n", gpu_frame*1e3, 1.0/gpu_frame, total_gpu_time, frames/total_gpu_time);
+ if (real_frame > 0 && total_real_time > 0)
+ scr.DebugFontPrintF("[REALTIME] Render+Present+Cruft took %lf ms (%lf FPS) (total %lf s, avg FPS %lf)\n", real_frame*1e3, 1.0/real_frame, total_real_time,frames/total_real_time);
+