From 6af3b55b9a11cf85e850eba0fddcf531e2002c7f Mon Sep 17 00:00:00 2001 From: dec05eba Date: Sat, 24 Aug 2024 13:53:06 +0200 Subject: Vertices: fix alpha blending when window background is transparent, add uniform for color --- src/graphics/shader.c | 5 +++++ src/graphics/vertex.c | 5 +++++ 2 files changed, 10 insertions(+) (limited to 'src/graphics') diff --git a/src/graphics/shader.c b/src/graphics/shader.c index f7f5545..f362490 100644 --- a/src/graphics/shader.c +++ b/src/graphics/shader.c @@ -231,6 +231,11 @@ int mgl_shader_program_set_uniform_vec4f(mgl_shader_program *self, const char *u return 0; } +int mgl_shader_program_set_uniform_color(mgl_shader_program *self, const char *uniform_name, mgl_color color) { + return mgl_shader_program_set_uniform_vec4f(self, uniform_name, + (mgl_vec4f){ color.r / 255.0f, color.g / 255.0f, color.b / 255.0f, color.a / 255.0f }); +} + /* TODO: Optimize glUseProgram */ void mgl_shader_program_use(mgl_shader_program *shader_program) { mgl_context *context = mgl_get_context(); diff --git a/src/graphics/vertex.c b/src/graphics/vertex.c index e55c180..92a6e93 100644 --- a/src/graphics/vertex.c +++ b/src/graphics/vertex.c @@ -1,11 +1,14 @@ #include "../../include/mgl/graphics/vertex.h" #include "../../include/mgl/graphics/texture.h" +#include "../../include/mgl/window/window.h" #include "../../include/mgl/mgl.h" void mgl_vertices_draw(mgl_context *context, const mgl_vertex *vertices, size_t vertex_count, mgl_primitive_type primitive_type, mgl_vec2f position) { if(vertex_count == 0) return; + mgl_window_set_texture_blend_func(context->current_window); + context->gl.glPushMatrix(); if(!mgl_texture_current_texture()) { @@ -22,4 +25,6 @@ void mgl_vertices_draw(mgl_context *context, const mgl_vertex *vertices, size_t context->gl.glDrawArrays(mgl_primitive_type_to_gl_mode(primitive_type), 0, vertex_count); context->gl.glPopMatrix(); + + mgl_window_set_render_blend_func(context->current_window); } -- cgit v1.2.3