# HG changeset patch # User Mike Becker # Date 1723736022 -7200 # Node ID 84472fb3adbdcd1a6205ed22a182bfd2f45d455c # Parent baa73a0be3ce9d29e2bb5eb9711b82c208b36c93 define macro for predefined shader diff -r baa73a0be3ce -r 84472fb3adbd src/ascension/glcontext.h --- a/src/ascension/glcontext.h Wed Aug 14 21:09:52 2024 +0200 +++ b/src/ascension/glcontext.h Thu Aug 15 17:33:42 2024 +0200 @@ -49,6 +49,8 @@ } shader; } AscGLContext; +#define ASC_SHADER_SPRITE (&asc_active_window->glctx.shader.sprite) + __attribute__((__nonnull__, __warn_unused_result__)) bool asc_gl_context_initialize( AscGLContext *ctx, diff -r baa73a0be3ce -r 84472fb3adbd src/ascension/shader.h --- a/src/ascension/shader.h Wed Aug 14 21:09:52 2024 +0200 +++ b/src/ascension/shader.h Thu Aug 15 17:33:42 2024 +0200 @@ -40,7 +40,7 @@ } AscShaderProgram; typedef struct AscShaderSprite { - AscShaderProgram base; + AscShaderProgram program; int depth; int tex; } AscShaderSprite; diff -r baa73a0be3ce -r 84472fb3adbd src/glcontext.c --- a/src/glcontext.c Wed Aug 14 21:09:52 2024 +0200 +++ b/src/glcontext.c Thu Aug 15 17:33:42 2024 +0200 @@ -50,13 +50,16 @@ static void asc_shader_initialize_predefined(AscGLContext *ctx) { AscShaderSprite *sprite = &ctx->shader.sprite; - sprite->base = asc_shader_easy_compile_and_link("shader/sprite_vtx.glsl", "shader/sprite_frag.glsl"); - sprite->depth = glGetUniformLocation(sprite->base.id, "depth"); - sprite->tex = glGetUniformLocation(sprite->base.id, "texture"); + sprite->program = asc_shader_easy_compile_and_link( + "shader/sprite_vtx.glsl", + "shader/sprite_frag.glsl" + ); + sprite->depth = glGetUniformLocation(sprite->program.id, "depth"); + sprite->tex = glGetUniformLocation(sprite->program.id, "texture"); } static void asc_shader_destroy_predefined(AscGLContext *ctx) { - asc_shader_program_destroy(ctx->shader.sprite.base); + asc_shader_program_destroy(ctx->shader.sprite.program); } bool asc_gl_context_initialize( diff -r baa73a0be3ce -r 84472fb3adbd src/scene.c --- a/src/scene.c Wed Aug 14 21:09:52 2024 +0200 +++ b/src/scene.c Thu Aug 15 17:33:42 2024 +0200 @@ -60,10 +60,10 @@ static void asc_sprite_draw(AscSprite const *node) { // Obtain shader - AscShaderSprite *shader = &asc_active_window->glctx.shader.sprite; + AscShaderSprite *shader = ASC_SHADER_SPRITE; // Upload model matrix - glUniformMatrix4fv(shader->base.model, 1, + glUniformMatrix4fv(shader->program.model, 1, GL_FALSE, node->data.world_transform); // Bind texture @@ -158,7 +158,7 @@ // Sprites // ------- // TODO: implement view matrix for 2D worlds - shader = &asc_active_window->glctx.shader.sprite.base; + shader = &asc_active_window->glctx.shader.sprite.program; glUseProgram(shader->id); glUniformMatrix4fv(shader->projection, 1, GL_FALSE, camera->projection);