summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/engine.c36
1 files changed, 22 insertions, 14 deletions
diff --git a/src/engine.c b/src/engine.c
index cb74e4e..79e0c0c 100644
--- a/src/engine.c
+++ b/src/engine.c
@@ -39,8 +39,8 @@
#ifdef BENCHMARK
#define BENCHEXPR(timevar, expr) \
{ \
- u32 t = glfwGetTime(); \
- expr timevar += glfwGetTime() - t; \
+ f64 t = get_time(); \
+ expr timevar += get_time() - t; \
}
extern i32 drawcall_len;
@@ -323,6 +323,7 @@ struct glfw_ctx initialize_GLFW(
}
glfwSetFramebufferSizeCallback(window, window_size_callback);
+ glfwSwapInterval(0);
#ifdef _DEBUG
ctx->ClearColor((float)0x10 / 255.f, (float)0x0a / 255.f, (float)0x33 / 255.f, 0.f);
@@ -345,7 +346,7 @@ Platform* engine_init(const char* windowtitle, v2_i32 windowsize,
const Asset_TextureSpec* textures[]) {
#ifdef BENCHMARK
- u32 init_start = glfwGetTime();
+ f64 init_start = get_time();
#endif
#if defined(__linux) || defined(__linux__) || defined(linux)
@@ -630,7 +631,7 @@ Platform* engine_init(const char* windowtitle, v2_i32 windowsize,
// TODO: Add global bindings
#ifdef BENCHMARK
- u32 init_stop = glfwGetTime();
+ f64 init_stop = get_time();
INFO("Initialization took %dms", init_stop - init_start);
#endif
@@ -665,13 +666,13 @@ i32 engine_run(Platform* p, StateType initial_state) {
StateType state = initial_state;
{
- u32 state_init_time = glfwGetTime();
+ f64 state_init_time = get_time();
State_init(state, mem);
INFO("Initializing state \"%s\" took %ldms", StateTypeStr[state],
- glfwGetTime() - state_init_time);
+ get_time() - state_init_time);
}
- u32 time = glfwGetTime();
+ f64 time = get_time();
// Update ticks
u64 ticks = 0;
@@ -694,17 +695,19 @@ i32 engine_run(Platform* p, StateType initial_state) {
StateType (*update_func)(void*) = State_updateFunc(state);
+ f64 last_fps_measurement = get_time();
+
/* Main loop */
INFO("Program: %d", p->testobject->shaderprogram);
GladGLContext *gl = p->window->context;
do {
- const u32 now = glfwGetTime();
- const u64 dt = now - time;
+ const f64 now = get_time();
+ const f64 dt = now - time;
time = now;
/* Wait frame_interval */
if (dt < frame_interval) {
#ifndef BENCHMARK
- delay(frame_interval - dt);
+ //delay(frame_interval - dt);
#else
/* We want to know how much time is spend sleeping */
@@ -712,6 +715,11 @@ i32 engine_run(Platform* p, StateType initial_state) {
#endif
}
+ if (now - last_fps_measurement > 1.000) {
+ last_fps_measurement = now;
+ printf("\n FPS: %.1f \t ticks: %lu", (double)ticks / now, ticks);
+ }
+
#ifdef BENCHMARK
if (time - profile_interval_timer > profile_interval_ms) {
/* Ticks/frames since last measurement */
@@ -794,10 +802,10 @@ i32 engine_run(Platform* p, StateType initial_state) {
// update_func = State_updateFunc(state);
//#ifdef BENCHMARK
// {
-// f64 t = glfwGetTime();
+// f64 t = get_time();
// State_init(state, mem);
// LOG("Initializing %s took %dms", StateTypeStr[state],
-// (int)((glfwGetTime() - t) * 1000.0));
+// (int)((get_time() - t) * 1000.0));
// }
//#else
// State_init(state, mem);
@@ -827,7 +835,7 @@ i32 engine_run(Platform* p, StateType initial_state) {
{ mat4 t;
//modelviewprojection = p * v * model
glm_mat4_mul(v, model, t);
- glm_rotate_at(t, (vec3){0,0,0}, glfwGetTime() / 2.f, (vec3){0,1,0}); //, (vec3)({0,1,0}));
+ glm_rotate_at(t, (vec3){0,0,0}, get_time() / 2.f, (vec3){0,1,0}); //, (vec3)({0,1,0}));
glm_mat4_mul(per, t, modelviewprojection);
}
@@ -963,6 +971,6 @@ void engine_input_ctx_reset(void) {
}
}
-u32 get_time(void) { return glfwGetTime(); }
+f64 get_time(void) { return glfwGetTime(); }
v2_i32 get_windowsize(void) { return GLOBAL_PLATFORM->window->windowsize; }
v2_i32* get_mousepos(void) { return &GLOBAL_PLATFORM->mouse_pos; }