diff options
author | talha <sarcxd@gmail.com> | 2025-03-23 00:20:16 +0500 |
---|---|---|
committer | talha <sarcxd@gmail.com> | 2025-03-23 00:20:16 +0500 |
commit | 4ded80f7145c08cd1f94d5f2af8dcd8d0452f507 (patch) | |
tree | 1ee0be90f169095fc9e2730ea3eced013be9e36a | |
parent | f8dd0bb51027d428d0cab7951489647656db0290 (diff) |
Updated Quad Drawing, Added compile and run script
-rwxr-xr-x | build.sh | 4 | ||||
-rwxr-xr-x | comp_run.sh | 3 | ||||
-rw-r--r-- | compile_flags.txt | 1 | ||||
-rw-r--r-- | source/renderer/renderer.cpp | 78 | ||||
-rw-r--r-- | source/renderer/renderer.h | 53 |
5 files changed, 79 insertions, 60 deletions
@@ -5,6 +5,8 @@ build_mode="debug" # temporary for now build_dir="build" mkdir -p $build_dir +compile_opts="-std=c++11 -g -O0" # -fsanitize=address + include_path=include include_opts="-I $include_path" @@ -14,7 +16,7 @@ build_opts="$build_dir/main" lib_path="libs/SDL2" link_opts="-L $lib_path -lSDL2 -lpthread -lm -ldl" -build_command="clang++ -std=c++11 -g -O0 -fsanitize=address $include_opts $files $link_opts -o $build_opts" +build_command="clang++ $compile_opts $include_opts $files $link_opts -o $build_opts" printf "Building Project...\n" printf "$build_command\n\n" diff --git a/comp_run.sh b/comp_run.sh new file mode 100755 index 0000000..341c5ef --- /dev/null +++ b/comp_run.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +sh build.sh && build/main diff --git a/compile_flags.txt b/compile_flags.txt index 474e164..92c4073 100644 --- a/compile_flags.txt +++ b/compile_flags.txt @@ -1,6 +1,7 @@ -xc++ -std=c++11 -Wall +-Wno-missing-braces -I./include -I/usr/include -I/usr/local/include diff --git a/source/renderer/renderer.cpp b/source/renderer/renderer.cpp index 22eb333..4e51f91 100644 --- a/source/renderer/renderer.cpp +++ b/source/renderer/renderer.cpp @@ -85,7 +85,7 @@ u32 gl_shader_program_from_path(const char* vspath, const char* fspath) return shader_program; } -u32 gl_setup_colored_quad(u32 sp) +u32 gl_setup_quad(u32 sp) { // @todo: make this use index buffer maybe? r32 vertices[] = { @@ -112,44 +112,44 @@ u32 gl_setup_colored_quad(u32 sp) return vao; } -void gl_draw_colored_quad( - GLRenderer* renderer, +void gl_draw_quad( + GlQuad quad, + CameraOrtho *camera, Vec3 position, Vec2 size, Vec3 color ) { - glEnable(GL_DEPTH_TEST); - glUseProgram(renderer->cq_sp); - if (renderer->cq_init == 0) - { + glEnable(GL_DEPTH_TEST); + glUseProgram(quad.sp); + if (camera->update) { + glUniformMatrix4fv( + glGetUniformLocation(quad.sp, "Projection"), + 1, GL_FALSE, (camera->proj).buffer + ); + camera->update = 0; + } + // setting quad size + Mat4 model = diag4m(1.0); + Mat4 scale = scaling_matrix4m(size.x/2.0f, size.y/2.0f, 0.0f); + model = multiply4m(scale, model); + // setting quad position + Mat4 translation = translation_matrix4m(position.x, position.y, position.z); + model = multiply4m(translation, model); + // setting color + glUniform3fv(glGetUniformLocation(quad.sp, "Color"), 1, color.data); + glUniformMatrix4fv( - glGetUniformLocation(renderer->cq_sp, "Projection"), - 1, GL_FALSE, (renderer->cam_proj).buffer + glGetUniformLocation(quad.sp, "Model"), + 1, GL_FALSE, model.buffer ); - renderer->cq_init = 1; - } - // setting quad size - Mat4 model = diag4m(1.0); - Mat4 scale = scaling_matrix4m(size.x, size.y, 0.0f); - model = multiply4m(scale, model); - // setting quad position - Mat4 translation = translation_matrix4m(position.x, position.y, position.z); - model = multiply4m(translation, model); - // setting color - glUniform3fv(glGetUniformLocation(renderer->cq_sp, "Color"), 1, color.data); - - glUniformMatrix4fv( - glGetUniformLocation(renderer->cq_sp, "Model"), - 1, GL_FALSE, model.buffer - ); - - glUniformMatrix4fv( - glGetUniformLocation(renderer->cq_sp, "View"), - 1, GL_FALSE, (renderer->cam_view).buffer - ); - - glBindVertexArray(renderer->cq_vao); - glDrawArrays(GL_TRIANGLES, 0, 6); + + glUniformMatrix4fv( + glGetUniformLocation(quad.sp, "View"), + 1, GL_FALSE, (camera->view).buffer + ); + + glBindVertexArray(quad.vao); + glDrawArrays(GL_TRIANGLES, 0, 6); } void gl_setup_colored_quad_optimized( @@ -501,7 +501,7 @@ void gl_setup_text(TextState *uistate) { void gl_render_text( GLRenderer *renderer, char *text, - Vec2 position, + Vec3 position, Vec3 color, r32 font_size) { // render_text @@ -510,19 +510,19 @@ void gl_render_text( glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glUseProgram(renderer->ui_text.sp); - if (renderer->ui_cam_update) { + if (renderer->ui_cam.update) { glUniformMatrix4fv( glGetUniformLocation( renderer->ui_text.sp, "View"), - 1, GL_FALSE, renderer->ui_cam_view.buffer); + 1, GL_FALSE, renderer->ui_cam.view.buffer); glUniformMatrix4fv( glGetUniformLocation( renderer->ui_text.sp, "Projection"), - 1, GL_FALSE, renderer->cam_proj.buffer); + 1, GL_FALSE, renderer->ui_cam.proj.buffer); - renderer->ui_cam_update = 0; + renderer->ui_cam.update = 0; } glUniform3fv( glGetUniformLocation( @@ -569,7 +569,7 @@ void gl_render_text( r32 ypos = liney + (baseline - render_scale*render_char.bbox0.y); Mat4 sc = scaling_matrix4m(font_size, font_size, 1.0f); - Mat4 tr = translation_matrix4m(xpos, ypos, 0); + Mat4 tr = translation_matrix4m(xpos, ypos, position.z); Mat4 model = multiply4m(tr, sc); renderer->ui_text.transforms[running_index] = model; renderer->ui_text.char_indexes[running_index] = diff --git a/source/renderer/renderer.h b/source/renderer/renderer.h index 6d9b7f6..d0467db 100644 --- a/source/renderer/renderer.h +++ b/source/renderer/renderer.h @@ -36,20 +36,35 @@ struct TextState { TextChar* char_map; }; +struct GlQuad { + u32 sp; + u32 vao; +}; + +struct CameraOrtho { + b8 update; + Vec3 up; + Vec3 pos; + Vec3 look; + Mat4 view; + Mat4 proj; +}; + struct GLRenderer { - // colored quad b8 cq_init; - u32 cq_sp; - u32 cq_vao; + GlQuad quad; + // ui camera + CameraOrtho ui_cam; + // camera Vec3 preset_up_dir; Mat4 cam_proj; - // ui camera - b8 ui_cam_update; - Vec3 ui_cam_pos; - Vec3 ui_cam_look; - Mat4 ui_cam_view; + //b8 ui_cam_update; + //Vec3 ui_cam_pos; + //Vec3 ui_cam_look; + //Mat4 ui_cam_view; // game camera + CameraOrtho game_cam; b8 cam_update; Vec3 cam_pos; Vec3 cam_look; @@ -78,25 +93,23 @@ u32 gl_shader_program(char *vs, char *fs); u32 gl_shader_program_from_path(const char *vspath, const char *fspath); // ==================== QUADS ==================== -u32 gl_setup_colored_quad(u32 sp); -void gl_draw_colored_quad( - GLRenderer* renderer, - Vec3 position, - Vec2 size, - Vec3 color - ); +u32 gl_setup_quad(u32 sp); +void gl_draw_quad(GlQuad quad, + CameraOrtho camera, + Vec3 position, + Vec2 size, + Vec3 color); // batched renderer void gl_setup_colored_quad_optimized( GLRenderer* renderer, - u32 sp - ); + u32 sp); void gl_draw_colored_quad_optimized( GLRenderer* renderer, Vec3 position, Vec2 size, - Vec3 color - ); + Vec3 color); + void gl_cq_flush(GLRenderer *renderer); // ==================== LINE ==================== @@ -113,7 +126,7 @@ void gl_line_flush(GLRenderer *renderer); void gl_setup_text(TextState *uistate); void gl_render_text(GLRenderer *renderer, char *text, - Vec2 position, + Vec3 position, Vec3 color, r32 font_size); void gl_text_flush(GLRenderer *renderer, u32 render_count); |