diff options
Diffstat (limited to 'video/out/gl_utils.h')
-rw-r--r-- | video/out/gl_utils.h | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/video/out/gl_utils.h b/video/out/gl_utils.h index a1bb2ecafb..b4f5650ea6 100644 --- a/video/out/gl_utils.h +++ b/video/out/gl_utils.h @@ -86,15 +86,27 @@ bool fbotex_change(struct fbotex *fbo, GL *gl, struct mp_log *log, int w, int h, #define FBOTEX_FUZZY_H 2 void fbotex_set_filter(struct fbotex *fbo, GLenum gl_filter); -void gl_matrix_ortho2d(float m[3][3], float x0, float x1, float y0, float y1); +void gl_matrix_ortho2d(float m[3][2], float x0, float x1, float y0, float y1); -static inline void gl_matrix_mul_vec(float m[3][3], float *x, float *y) +// This treats m as an affine transformation, in other words m[2][n] gets +// added to the output. +static inline void gl_matrix_mul_vec(float m[3][2], float *x, float *y) { float vx = *x, vy = *y; *x = vx * m[0][0] + vy * m[1][0] + m[2][0]; *y = vx * m[0][1] + vy * m[1][1] + m[2][1]; } +struct mp_rect_f { + float x0, y0, x1, y1; +}; + +static inline void gl_matrix_mul_rect(float m[3][2], struct mp_rect_f *r) +{ + gl_matrix_mul_vec(m, &r->x0, &r->y0); + gl_matrix_mul_vec(m, &r->x1, &r->y1); +} + void gl_set_debug_logger(GL *gl, struct mp_log *log); struct gl_shader_cache; |