A 3D game engine from scratch.
1// (c) 2020 Vlad-Stefan Harbuz <vlad@vladh.net>
2
3#pragma once
4
5#include <chrono>
6namespace chrono = std::chrono;
7#include "constants.hpp"
8#include "types.hpp"
9
10chrono::steady_clock::time_point debug_start_timer();
11f64 debug_end_timer(chrono::steady_clock::time_point t0);
12
13#if USE_TIMERS
14#define START_TIMER(name) \
15 auto debug_timerstart_##name = debug_start_timer();
16
17#define END_TIMER_MIN(name, min_duration_ms) \
18{ \
19 f64 duration = debug_end_timer(debug_timerstart_##name); \
20 if (duration >= min_duration_ms) { \
21 logs::info("Timer %s took %0.fms", #name, duration); \
22 } \
23}
24
25#define END_TIMER(name) END_TIMER_MIN(name, 0)
26#else
27#define START_TIMER(name)
28#define END_TIMER_MIN(name, min_duration_ms)
29#define END_TIMER(name)
30#endif