Add alpha to wlr_render_with_matrix

so we can use the alpha channel to e.g. blend in textures
This commit is contained in:
Guido Günther 2018-02-21 23:20:09 +01:00
parent e6ca78b0e4
commit d08792bfff
11 changed files with 18 additions and 17 deletions

View file

@ -171,7 +171,7 @@ static void draw_quad() {
}
static bool wlr_gles2_render_texture(struct wlr_renderer *wlr_renderer,
struct wlr_texture *texture, const float (*matrix)[16]) {
struct wlr_texture *texture, const float (*matrix)[16], float alpha) {
if (!texture || !texture->valid) {
wlr_log(L_ERROR, "attempt to render invalid texture");
return false;
@ -179,12 +179,12 @@ static bool wlr_gles2_render_texture(struct wlr_renderer *wlr_renderer,
wlr_texture_bind(texture);
GL_CALL(glUniformMatrix4fv(0, 1, GL_FALSE, *matrix));
// TODO: source alpha from somewhere else I guess
GL_CALL(glUniform1f(2, 1.0f));
GL_CALL(glUniform1f(2, alpha));
draw_quad();
return true;
}
static void wlr_gles2_render_quad(struct wlr_renderer *wlr_renderer,
const float (*color)[4], const float (*matrix)[16]) {
GL_CALL(glUseProgram(shaders.quad));

View file

@ -36,8 +36,8 @@ struct wlr_texture *wlr_render_texture_create(struct wlr_renderer *r) {
}
bool wlr_render_with_matrix(struct wlr_renderer *r,
struct wlr_texture *texture, const float (*matrix)[16]) {
return r->impl->render_with_matrix(r, texture, matrix);
struct wlr_texture *texture, const float (*matrix)[16], float alpha) {
return r->impl->render_with_matrix(r, texture, matrix, alpha);
}
void wlr_render_colored_quad(struct wlr_renderer *r,