mirror of
https://gitlab.freedesktop.org/wlroots/wlroots.git
synced 2025-12-14 08:56:26 -05:00
matrix: unify API, don't use array pointers
This commit is contained in:
parent
b6a3f240c7
commit
d26b67cb06
18 changed files with 172 additions and 167 deletions
|
|
@ -122,8 +122,8 @@ static void wlr_gles2_end(struct wlr_renderer *wlr_renderer) {
|
|||
}
|
||||
|
||||
static void wlr_gles2_clear(struct wlr_renderer *wlr_renderer,
|
||||
const float (*color)[4]) {
|
||||
glClearColor((*color)[0], (*color)[1], (*color)[2], (*color)[3]);
|
||||
const float color[static 4]) {
|
||||
glClearColor(color[0], color[1], color[2], color[3]);
|
||||
glClear(GL_COLOR_BUFFER_BIT);
|
||||
}
|
||||
|
||||
|
|
@ -171,14 +171,15 @@ static void draw_quad() {
|
|||
}
|
||||
|
||||
static bool wlr_gles2_render_texture(struct wlr_renderer *wlr_renderer,
|
||||
struct wlr_texture *texture, const float (*matrix)[16], float alpha) {
|
||||
struct wlr_texture *texture, const float matrix[static 16],
|
||||
float alpha) {
|
||||
if (!texture || !texture->valid) {
|
||||
wlr_log(L_ERROR, "attempt to render invalid texture");
|
||||
return false;
|
||||
}
|
||||
|
||||
wlr_texture_bind(texture);
|
||||
GL_CALL(glUniformMatrix4fv(0, 1, GL_FALSE, *matrix));
|
||||
GL_CALL(glUniformMatrix4fv(0, 1, GL_FALSE, matrix));
|
||||
GL_CALL(glUniform1f(2, alpha));
|
||||
draw_quad();
|
||||
return true;
|
||||
|
|
@ -186,18 +187,18 @@ static bool wlr_gles2_render_texture(struct wlr_renderer *wlr_renderer,
|
|||
|
||||
|
||||
static void wlr_gles2_render_quad(struct wlr_renderer *wlr_renderer,
|
||||
const float (*color)[4], const float (*matrix)[16]) {
|
||||
const float color[static 4], const float matrix[static 16]) {
|
||||
GL_CALL(glUseProgram(shaders.quad));
|
||||
GL_CALL(glUniformMatrix4fv(0, 1, GL_FALSE, *matrix));
|
||||
GL_CALL(glUniform4f(1, (*color)[0], (*color)[1], (*color)[2], (*color)[3]));
|
||||
GL_CALL(glUniformMatrix4fv(0, 1, GL_FALSE, matrix));
|
||||
GL_CALL(glUniform4f(1, color[0], color[1], color[2], color[3]));
|
||||
draw_quad();
|
||||
}
|
||||
|
||||
static void wlr_gles2_render_ellipse(struct wlr_renderer *wlr_renderer,
|
||||
const float (*color)[4], const float (*matrix)[16]) {
|
||||
const float color[static 4], const float matrix[static 16]) {
|
||||
GL_CALL(glUseProgram(shaders.ellipse));
|
||||
GL_CALL(glUniformMatrix4fv(0, 1, GL_TRUE, *matrix));
|
||||
GL_CALL(glUniform4f(1, (*color)[0], (*color)[1], (*color)[2], (*color)[3]));
|
||||
GL_CALL(glUniformMatrix4fv(0, 1, GL_TRUE, matrix));
|
||||
GL_CALL(glUniform4f(1, color[0], color[1], color[2], color[3]));
|
||||
draw_quad();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -227,16 +227,16 @@ static bool gles2_texture_upload_eglimage(struct wlr_texture *wlr_tex,
|
|||
}
|
||||
|
||||
static void gles2_texture_get_matrix(struct wlr_texture *_texture,
|
||||
float (*matrix)[16], const float (*projection)[16], int x, int y) {
|
||||
float mat[static 16], const float projection[static 16], int x, int y) {
|
||||
struct wlr_gles2_texture *texture = (struct wlr_gles2_texture *)_texture;
|
||||
float world[16];
|
||||
wlr_matrix_identity(matrix);
|
||||
wlr_matrix_translate(&world, x, y, 0);
|
||||
wlr_matrix_mul(matrix, &world, matrix);
|
||||
wlr_matrix_scale(&world,
|
||||
wlr_matrix_identity(mat);
|
||||
wlr_matrix_translate(world, x, y, 0);
|
||||
wlr_matrix_mul(mat, mat, world);
|
||||
wlr_matrix_scale(world,
|
||||
texture->wlr_texture.width, texture->wlr_texture.height, 1);
|
||||
wlr_matrix_mul(matrix, &world, matrix);
|
||||
wlr_matrix_mul(projection, matrix, matrix);
|
||||
wlr_matrix_mul(mat, mat, world);
|
||||
wlr_matrix_mul(mat, projection, mat);
|
||||
}
|
||||
|
||||
static void gles2_texture_get_buffer_size(struct wlr_texture *texture, struct
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ void wlr_renderer_end(struct wlr_renderer *r) {
|
|||
r->impl->end(r);
|
||||
}
|
||||
|
||||
void wlr_renderer_clear(struct wlr_renderer *r, const float (*color)[4]) {
|
||||
void wlr_renderer_clear(struct wlr_renderer *r, const float color[static 4]) {
|
||||
r->impl->clear(r, color);
|
||||
}
|
||||
|
||||
|
|
@ -36,17 +36,18 @@ 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], float alpha) {
|
||||
struct wlr_texture *texture, const float matrix[static 16],
|
||||
float alpha) {
|
||||
return r->impl->render_with_matrix(r, texture, matrix, alpha);
|
||||
}
|
||||
|
||||
void wlr_render_colored_quad(struct wlr_renderer *r,
|
||||
const float (*color)[4], const float (*matrix)[16]) {
|
||||
const float color[static 4], const float matrix[static 16]) {
|
||||
r->impl->render_quad(r, color, matrix);
|
||||
}
|
||||
|
||||
void wlr_render_colored_ellipse(struct wlr_renderer *r,
|
||||
const float (*color)[4], const float (*matrix)[16]) {
|
||||
const float color[static 4], const float matrix[static 16]) {
|
||||
r->impl->render_ellipse(r, color, matrix);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -54,8 +54,8 @@ bool wlr_texture_upload_eglimage(struct wlr_texture *texture,
|
|||
}
|
||||
|
||||
void wlr_texture_get_matrix(struct wlr_texture *texture,
|
||||
float (*matrix)[16], const float (*projection)[16], int x, int y) {
|
||||
texture->impl->get_matrix(texture, matrix, projection, x, y);
|
||||
float mat[static 16], const float projection[static 16], int x, int y) {
|
||||
texture->impl->get_matrix(texture, mat, projection, x, y);
|
||||
}
|
||||
|
||||
void wlr_texture_get_buffer_size(struct wlr_texture *texture, struct wl_resource
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue