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:
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,