ded

Dramatic EDitor
Index Commits Files Refs README LICENSE
commit 8ea55694c3b61470068fa2ee20972bac6f4e1134
parent 7a3fd90e0983dc745ae363effcea117aa6a5e511
Author: rexim <reximkut@gmail.com>
Date:   Mon,  9 Jan 2023 02:30:03 +0700

Tuck updating uniforms under simple_renderer_set_shader()

Diffstat:
Msrc/main.c | 11+++--------
Msrc/simple_renderer.c | 4++++
Msrc/simple_renderer.h | 4+++-
3 files changed, 10 insertions(+), 9 deletions(-)
diff --git a/src/main.c b/src/main.c
@@ -73,12 +73,11 @@ void render_editor(SDL_Window *window, Free_Glyph_Atlas *atlas, Simple_Renderer 
 
     simple_renderer_use(sr);
 
+    sr->resolution = vec2f(w, h);
+    sr->time = (float) SDL_GetTicks() / 1000.0f;
+
     // Render text
     simple_renderer_set_shader(sr, SHADER_FOR_EPICNESS);
-    glUniform2f(sr->uniforms[UNIFORM_SLOT_RESOLUTION], (float) w, (float) h);
-    glUniform1f(sr->uniforms[UNIFORM_SLOT_TIME], (float) SDL_GetTicks() / 1000.0f);
-    glUniform2f(sr->uniforms[UNIFORM_SLOT_CAMERA_POS], sr->camera_pos.x, sr->camera_pos.y);
-    glUniform1f(sr->uniforms[UNIFORM_SLOT_CAMERA_SCALE], sr->camera_scale);
     {
         for (size_t row = 0; row < editor->lines.count; ++row) {
             Line line = editor->lines.items[row];
@@ -114,10 +113,6 @@ void render_editor(SDL_Window *window, Free_Glyph_Atlas *atlas, Simple_Renderer 
 
     // Render cursor
     simple_renderer_set_shader(sr, SHADER_FOR_COLOR);
-    glUniform2f(sr->uniforms[UNIFORM_SLOT_RESOLUTION], (float) w, (float) h);
-    glUniform1f(sr->uniforms[UNIFORM_SLOT_TIME], (float) SDL_GetTicks() / 1000.0f);
-    glUniform2f(sr->uniforms[UNIFORM_SLOT_CAMERA_POS], sr->camera_pos.x, sr->camera_pos.y);
-    glUniform1f(sr->uniforms[UNIFORM_SLOT_CAMERA_SCALE], sr->camera_scale);
     {
         float CURSOR_WIDTH = 5.0f;
         Uint32 CURSOR_BLINK_THRESHOLD = 500;
diff --git a/src/simple_renderer.c b/src/simple_renderer.c
@@ -210,6 +210,10 @@ void simple_renderer_set_shader(Simple_Renderer *sr, Simple_Shader shader)
     sr->current_shader = shader;
     glUseProgram(sr->programs[sr->current_shader]);
     get_uniform_location(sr->programs[sr->current_shader], sr->uniforms);
+    glUniform2f(sr->uniforms[UNIFORM_SLOT_RESOLUTION], sr->resolution.x, sr->resolution.y);
+    glUniform1f(sr->uniforms[UNIFORM_SLOT_TIME], sr->time);
+    glUniform2f(sr->uniforms[UNIFORM_SLOT_CAMERA_POS], sr->camera_pos.x, sr->camera_pos.y);
+    glUniform1f(sr->uniforms[UNIFORM_SLOT_CAMERA_SCALE], sr->camera_scale);
 }
 
 void simple_renderer_flush(Simple_Renderer *sr)
diff --git a/src/simple_renderer.h b/src/simple_renderer.h
@@ -48,11 +48,13 @@ typedef struct {
     Simple_Vertex verticies[SIMPLE_VERTICIES_CAP];
     size_t verticies_count;
 
+    Vec2f resolution;
+    float time;
+
     Vec2f camera_pos;
     float camera_scale;
     float camera_scale_vel;
     Vec2f camera_vel;
-
 } Simple_Renderer;
 
 void simple_renderer_init(Simple_Renderer *sr,