From 7d26a3cc6cfd9c207693ef977b0f0922d52e1d5c Mon Sep 17 00:00:00 2001 From: talha Date: Wed, 15 Jan 2025 01:06:46 +0500 Subject: Updated timer, removed benchmark code --- source/main.cpp | 127 +++++++++++++------------------------------------------- 1 file changed, 29 insertions(+), 98 deletions(-) diff --git a/source/main.cpp b/source/main.cpp index 49f16fa..f86f404 100755 --- a/source/main.cpp +++ b/source/main.cpp @@ -165,27 +165,29 @@ struct Rect { }; struct FrameTimer { - r64 tCurr; - r64 tPrev; + u64 tCurr; + u64 tPrev; r64 tDeltaMS; r64 tDelta; + u64 tFreq; }; FrameTimer frametimer() { FrameTimer res = {}; - res.tCurr = SDL_GetTicks64(); + res.tFreq = SDL_GetPerformanceFrequency(); + res.tCurr = SDL_GetPerformanceCounter(); res.tPrev = res.tCurr; - res.tDeltaMS = res.tCurr - res.tPrev; - res.tDelta = res.tDeltaMS / 1000.0f; + res.tDelta = (r64)(res.tCurr - res.tPrev) / (r64)res.tFreq; + res.tDeltaMS = res.tDelta * 1000.0f; return res; } void update_frame_timer(FrameTimer *ft) { ft->tPrev = ft->tCurr; - ft->tCurr = SDL_GetTicks64(); - ft->tDeltaMS = ft->tCurr - ft->tPrev; - ft->tDelta = ft->tDeltaMS / 1000.0f; + ft->tCurr = SDL_GetPerformanceCounter(); + ft->tDelta = (r64)(ft->tCurr - ft->tPrev) / (r64)ft->tFreq; + ft->tDeltaMS = ft->tDelta * 1000.0f; } void enforce_frame_rate(FrameTimer *ft, u32 target) { @@ -193,9 +195,9 @@ void enforce_frame_rate(FrameTimer *ft, u32 target) { 1000.0f/(r64)target ); while(ft->tDeltaMS < target_frametime) { - ft->tCurr = SDL_GetTicks64(); - ft->tDeltaMS = ft->tCurr - ft->tPrev; - ft->tDelta = ft->tDeltaMS / 1000.0f; + ft->tCurr = SDL_GetPerformanceCounter(); + ft->tDelta = (r64)(ft->tCurr - ft->tPrev) / ft->tFreq; + ft->tDeltaMS = ft->tDelta * 1000.0f; // pass time continue; @@ -757,28 +759,17 @@ int main(int argc, char* argv[]) return -1; } - // load glad - if (!gladLoadGLLoader((GLADloadproc)SDL_GL_GetProcAddress)) { - printf("ERROR :: Failed to initialize Glad\n"); - return -1; - } + // load glad + if (!gladLoadGLLoader((GLADloadproc)SDL_GL_GetProcAddress)) { + printf("ERROR :: Failed to initialize Glad\n"); + return -1; + } // vsync controls: 0 = OFF | 1 = ON (Default) SDL_GL_SetSwapInterval(0); GLRenderer *renderer = new GLRenderer(); - // @resume: I am working on creating an efficient quad renderer via - // instancing, in order to achieve that I have absolutely butchered the - // performance of my program by making it render 200,000 quads - // the goal is to use this to see when performance plummets - // - // so far the progress is that, I have somewhat implemented a jank system - // I need to write shaders, it compiles and runs but it is useless - // @todo: fix the renderer. - - // @note: batch rendering - // 3 columns, 6 rows u32 pos_ele_count = BATCH_SIZE * 4*6; u32 color_ele_count = BATCH_SIZE * 3*6; // 1GB <= (((1b*1024)kb*1024)mb*1024)mb @@ -810,7 +801,7 @@ int main(int argc, char* argv[]) gl_setup_colored_quad_optimized(renderer, cq_batch_sp); - r32 render_scale = 8.0f; + r32 render_scale = 2.0f; // ========== // setup text // 1. setup free type library stuff @@ -872,7 +863,7 @@ int main(int argc, char* argv[]) ); // @section: gameplay variables - r32 motion_scale = 1.5f; + r32 motion_scale = 2.0f; r32 fall_accelx = 3.0f*motion_scale; r32 move_accelx = 6.0f*motion_scale; r32 freefall_accel = -11.8f*motion_scale; @@ -935,7 +926,7 @@ int main(int argc, char* argv[]) while (game_running) { update_frame_timer(&timer); - //enforce_frame_rate(&timer, 60); + enforce_frame_rate(&timer, 60); controller.jump = 0; controller.toggle_gravity = 0; @@ -1159,8 +1150,9 @@ int main(int argc, char* argv[]) } else { + // @no_clip_movement Vec2 dir = get_move_dir(controller); - pd_1 = dir * render_scale; + pd_1 = dir * 5.0f * render_scale; if (pd_1.x < 0.0f) { p_motion_dir.x = -1.0f; } else if (pd_1.x > 0.0f) { @@ -1292,61 +1284,27 @@ int main(int argc, char* argv[]) glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // player - gl_draw_colored_quad(renderer, + gl_draw_colored_quad_optimized(renderer, state.player.position, // position state.player.size, // size Vec3{0.45f, 0.8f, 0.2f}); // floor - gl_draw_colored_quad(renderer, + gl_draw_colored_quad_optimized(renderer, state.floor.position, state.floor.size, Vec3{1.0f, 1.0f, 1.0f}); // wall - gl_draw_colored_quad(renderer, + gl_draw_colored_quad_optimized(renderer, state.wall.position, state.wall.size, Vec3{1.0f, 0.0f, 0.0f}); - // benchmark code - u32 max_cq_count = 1000; - u32 max_row_ele = 50; - u32 max_col_ele = max_cq_count/max_row_ele; - Vec2 screen_render_size = (state.render_scale * state.screen_size)/2.0f; - Vec2 based_size = Vec2{ - screen_render_size.x / max_row_ele, - screen_render_size.y / max_col_ele - }; - for (int i=0;icq_pos_batch); - array_clear(&renderer->cq_color_batch); + array_clear(r32, renderer->cq_pos_batch); + array_clear(r32, renderer->cq_color_batch); renderer->cq_batch_count = 0; + // render ui text if (is_collide_x || is_collide_y) @@ -1374,21 +1332,8 @@ int main(int argc, char* argv[]) Vec3{0.0f, 0.0f, 0.0f}); // color } - //char accel_output[50]; - //sprintf(accel_output, "effective_force %f", effective_force); - //gl_render_text(renderer, - // accel_output, - // Vec2{500.0f, 150.0f}, // position - // 28.0f*render_scale, // size - // Vec3{0.0f, 0.0f, 0.0f}); // color char fmt_buffer[50]; - //sprintf(fmt_buffer, "player moving? %d", is_key_down_x); - //gl_render_text(renderer, - // fmt_buffer, - // Vec2{900.0f, 40.0f}, // position - // 28.0f*render_scale, // size - // Vec3{0.0f, 0.0f, 0.0f}); // color sprintf(fmt_buffer, "frametime: %f", timer.tDelta); gl_render_text(renderer, @@ -1397,20 +1342,6 @@ int main(int argc, char* argv[]) 28.0f*render_scale, // size Vec3{0.0f, 0.0f, 0.0f}); // color - //sprintf(fmt_buffer, "%f pixels", pd_1.x); - - //gl_render_text(renderer, - // fmt_buffer, - // Vec2{500.0f, 200.0f}, // position - // 28.0f*render_scale, // size - // Vec3{0.0f, 0.0f, 0.0f}); // color - - //sprintf(fmt_buffer, "collide: x(%d),y(%d)", collidex, collidey); - //gl_render_text(renderer, - // fmt_buffer, - // Vec2{500.0f, 1000.0f}, // position - // 28.0f*render_scale, // size - // Vec3{0.0f, 0.0f, 0.0f}); // color SDL_GL_SwapWindow(window); } -- cgit v1.2.3