From: Brendan Hansen Date: Sat, 24 Oct 2020 03:40:37 +0000 (-0500) Subject: rendering at full window dimensions now X-Git-Url: https://git.brendanfh.com/?a=commitdiff_plain;h=155ac4468dee274c1e22d6b61e47d576e2d02d88;p=csc718.git rendering at full window dimensions now --- diff --git a/src/sim.cpp b/src/sim.cpp index 19de0be..8ceaa8c 100644 --- a/src/sim.cpp +++ b/src/sim.cpp @@ -33,10 +33,14 @@ glfw_key_handler(GLFWwindow* window, i32 key, i32 scancode, i32 action, i32 mods glfwSetWindowShouldClose(window, 1); } +internal i32 window_width; +internal i32 window_height; + internal void glfw_resize_handler(GLFWwindow* window, i32 width, i32 height) { - glViewport(0, 0, width, height); + window_width = width; + window_height = height; } internal void @@ -230,8 +234,10 @@ update(SimState* state, f64 dt) } } +// NOTE CLEANUP(Brendan): Bunch of graphics state that should go elsewhere. internal GLuint body_buffer; internal GLuint circle_mesh; +internal GLuint body_program; internal void draw(SimState* state) @@ -241,6 +247,14 @@ draw(SimState* state) glBufferSubData(GL_ARRAY_BUFFER, 0, state->bodies.count * sizeof(Body), state->bodies.data); glBindBuffer(GL_ARRAY_BUFFER, -1); + glUseProgram(body_program); + + mat4 ortho_mat; + mat4_ortho(&ortho_mat, 0, window_width, 0, window_height, 0.0f, 100.0f); + GLuint ortho_mat_loc = glGetUniformLocation(body_program, "u_proj"); + glUniformMatrix4fv(ortho_mat_loc, 1, false, (f32 *) ortho_mat); + glViewport(0, 0, window_width, window_height); + // NOTE(Brendan): Clear the screen. glClearColor(0.1, 0.1, 0.1, 1.0); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); @@ -287,25 +301,19 @@ main(i32 argc, char* argv[]) circle_mesh = create_circle_mesh(); - GLuint v_shader = load_shader(GL_VERTEX_SHADER, "res/shaders/planet_vert.glsl"); - GLuint f_shader = load_shader(GL_FRAGMENT_SHADER, "res/shaders/planet_frag.glsl"); - GLuint program = create_program(v_shader, f_shader); - glUseProgram(program); + body_program = create_program(load_shader(GL_VERTEX_SHADER, "res/shaders/planet_vert.glsl"), + load_shader(GL_FRAGMENT_SHADER, "res/shaders/planet_frag.glsl")); + glUseProgram(body_program); - mat4 ortho_mat; - mat4_ortho(&ortho_mat, 0, 800, 0, 800, 0.0f, 100.0f); - - GLuint ortho_mat_loc = glGetUniformLocation(program, "u_proj"); - glUniformMatrix4fv(ortho_mat_loc, 1, false, (f32 *) ortho_mat); - - GLuint planet_colors_loc = glGetUniformLocation(program, "u_planet_colors"); - persist GLfloat planet_colors[16] = { - 1.0f, 0.0f, 0.0f, 1.0f, - 0.0f, 1.0f, 0.0f, 1.0f, - 0.0f, 0.0f, 1.0f, 1.0f, - 1.0f, 1.0f, 1.0f, 1.0f, + GLuint planet_colors_loc = glGetUniformLocation(body_program, "u_planet_colors"); + persist GLfloat planet_colors[4][4] = + { + { 1.0f, 0.0f, 0.0f, 1.0f }, + { 0.0f, 1.0f, 0.0f, 1.0f }, + { 0.0f, 0.0f, 1.0f, 1.0f }, + { 1.0f, 1.0f, 1.0f, 1.0f }, }; - glUniform4fv(planet_colors_loc, 4, planet_colors); + glUniform4fv(planet_colors_loc, 4, (GLfloat *) planet_colors); auto state = alloc(); sim_state_init(state);