diff options
author | pommicket <pommicket@gmail.com> | 2022-11-03 18:22:44 -0400 |
---|---|---|
committer | pommicket <pommicket@gmail.com> | 2022-11-03 18:22:44 -0400 |
commit | 4d995edfdde5953bc5669c54b1194be40a3641f2 (patch) | |
tree | df24530695859b1cf7b48ee2775f0b57a990edc4 /main.c | |
parent | 1e49845629e93d4513b9388c524d7d1e0ac945f8 (diff) |
better shader system
Diffstat (limited to 'main.c')
-rw-r--r-- | main.c | 30 |
1 files changed, 21 insertions, 9 deletions
@@ -32,6 +32,15 @@ no_warn_end #define PCRE2_CODE_UNIT_WIDTH 32 #include <pcre2.h> +#if DEBUG +extern unsigned char *stbi_load(char const *filename, int *x, int *y, int *comp, int req_comp); +#else +#define STB_IMAGE_STATIC +no_warn_start +#include "stb_image.c" +no_warn_end +#endif + #include "unicode.h" #include "util.c" #if _WIN32 @@ -792,16 +801,19 @@ int main(int argc, char **argv) { // background shader Settings *s = ted_active_settings(ted); if (s->bg_shader) { - glUseProgram(s->bg_shader); - if (s->bg_array) - glBindVertexArray(s->bg_array); + GLuint shader = s->bg_shader->shader; + GLuint buffer = s->bg_shader->buffer; + GLuint array = s->bg_shader->array; + + glUseProgram(shader); + if (array) glBindVertexArray(array); double t = time_get_seconds(); - glUniform1f(glGetUniformLocation(s->bg_shader, "t_time"), (float)fmod(t - start_time, 3600)); - glUniform2f(glGetUniformLocation(s->bg_shader, "t_aspect"), (float)window_width / (float)window_height, 1); - glUniform1f(glGetUniformLocation(s->bg_shader, "t_save_time"), (float)(t - ted->last_save_time)); - glBindBuffer(GL_ARRAY_BUFFER, s->bg_buffer); - if (!s->bg_array) { - GLuint v_pos = (GLuint)glGetAttribLocation(s->bg_shader, "v_pos"); + glUniform1f(glGetUniformLocation(shader, "t_time"), (float)fmod(t - start_time, 3600)); + glUniform2f(glGetUniformLocation(shader, "t_aspect"), (float)window_width / (float)window_height, 1); + glUniform1f(glGetUniformLocation(shader, "t_save_time"), (float)(t - ted->last_save_time)); + glBindBuffer(GL_ARRAY_BUFFER, buffer); + if (!array) { + GLuint v_pos = (GLuint)glGetAttribLocation(shader, "v_pos"); glVertexAttribPointer(v_pos, 2, GL_FLOAT, 0, 2 * sizeof(float), 0); glEnableVertexAttribArray(v_pos); } |