58 ); |
58 ); |
59 } |
59 } |
60 |
60 |
61 static void asc_sprite_draw(AscSprite const *node) { |
61 static void asc_sprite_draw(AscSprite const *node) { |
62 // Obtain shader |
62 // Obtain shader |
63 AscShaderSprite *shader = &asc_active_window->glctx.shader.sprite; |
63 AscShaderSprite *shader = ASC_SHADER_SPRITE; |
64 |
64 |
65 // Upload model matrix |
65 // Upload model matrix |
66 glUniformMatrix4fv(shader->base.model, 1, |
66 glUniformMatrix4fv(shader->program.model, 1, |
67 GL_FALSE, node->data.world_transform); |
67 GL_FALSE, node->data.world_transform); |
68 |
68 |
69 // Bind texture |
69 // Bind texture |
70 asc_texture_bind(&node->tex, shader->tex, 0); |
70 asc_texture_bind(&node->tex, shader->tex, 0); |
71 |
71 |
156 glClear(GL_DEPTH_BUFFER_BIT); |
156 glClear(GL_DEPTH_BUFFER_BIT); |
157 |
157 |
158 // Sprites |
158 // Sprites |
159 // ------- |
159 // ------- |
160 // TODO: implement view matrix for 2D worlds |
160 // TODO: implement view matrix for 2D worlds |
161 shader = &asc_active_window->glctx.shader.sprite.base; |
161 shader = &asc_active_window->glctx.shader.sprite.program; |
162 glUseProgram(shader->id); |
162 glUseProgram(shader->id); |
163 glUniformMatrix4fv(shader->projection, 1, |
163 glUniformMatrix4fv(shader->projection, 1, |
164 GL_FALSE, camera->projection); |
164 GL_FALSE, camera->projection); |
165 |
165 |
166 // render opaque sprites from front to back |
166 // render opaque sprites from front to back |