From cf1ed777ae56f677bcc0f832c52c04dc65be18ce Mon Sep 17 00:00:00 2001 From: William McKinnon Date: Sat, 13 Aug 2022 02:14:23 -0400 Subject: Add official fx renderer (#3) --- include/sway/desktop/fx_renderer.h | 51 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 include/sway/desktop/fx_renderer.h (limited to 'include/sway/desktop') diff --git a/include/sway/desktop/fx_renderer.h b/include/sway/desktop/fx_renderer.h new file mode 100644 index 00000000..bf8cd3d1 --- /dev/null +++ b/include/sway/desktop/fx_renderer.h @@ -0,0 +1,51 @@ +#ifndef _SWAY_OPENGL_H +#define _SWAY_OPENGL_H + +#include + +struct gles2_tex_shader { + GLuint program; + GLint proj; + GLint tex; + GLint alpha; + GLint pos_attrib; + GLint tex_attrib; +}; + +struct fx_renderer { + struct wlr_egl *egl; + + float projection[9]; + + // Shaders + struct { + struct { + GLuint program; + GLint proj; + GLint color; + GLint pos_attrib; + } quad; + struct gles2_tex_shader tex_rgba; + struct gles2_tex_shader tex_rgbx; + struct gles2_tex_shader tex_ext; + } shaders; +}; + +struct fx_renderer *fx_renderer_create(struct wlr_egl *egl); + +void fx_renderer_begin(struct fx_renderer *renderer, uint32_t width, uint32_t height); + +void fx_renderer_end(); + +void fx_renderer_clear(const float color[static 4]); + +void fx_renderer_scissor(struct wlr_box *box); + +bool fx_render_subtexture_with_matrix(struct fx_renderer *renderer, + struct wlr_texture *wlr_texture, const struct wlr_fbox *box, + const float matrix[static 9], float alpha); + +bool fx_render_texture_with_matrix(struct fx_renderer *renderer, + struct wlr_texture *wlr_texture, const float matrix[static 9], float alpha); + +#endif -- cgit v1.2.3