From 9ad874eef8ed699e5c8d9343857cfffe699c3abd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francisco=20Jos=C3=A9=20Garc=C3=ADa=20Garc=C3=ADa?= Date: Sat, 14 Dec 2019 14:08:57 +0100 Subject: [PATCH] (Vita) Add new function to draw textured arrays of vertices --- deps/libvita2d/include/vita2d.h | 1 + deps/libvita2d/source/vita2d_texture.c | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/deps/libvita2d/include/vita2d.h b/deps/libvita2d/include/vita2d.h index d649e91aa8..0836f8662f 100644 --- a/deps/libvita2d/include/vita2d.h +++ b/deps/libvita2d/include/vita2d.h @@ -140,6 +140,7 @@ void vita2d_draw_texture_tint_scale_rotate_hotspot(const vita2d_texture *texture void vita2d_draw_texture_tint_scale_rotate(const vita2d_texture *texture, float x, float y, float x_scale, float y_scale, float rad, unsigned int color); void vita2d_draw_texture_part_tint_scale_rotate(const vita2d_texture *texture, float x, float y, float tex_x, float tex_y, float tex_w, float tex_h, float x_scale, float y_scale, float rad, unsigned int color); void vita2d_draw_array_textured(const vita2d_texture *texture, SceGxmPrimitiveType mode, const vita2d_texture_vertex *vertices, size_t count, unsigned int color); +void vita2d_draw_array_textured_mat(const vita2d_texture *texture, const vita2d_texture_tint_vertex *vertices, size_t count, float *mat); /** ADVANCED **/ void vita2d_texture_set_wvp(float x, float y, float width, float height); diff --git a/deps/libvita2d/source/vita2d_texture.c b/deps/libvita2d/source/vita2d_texture.c index d280978898..431e7fbed9 100644 --- a/deps/libvita2d/source/vita2d_texture.c +++ b/deps/libvita2d/source/vita2d_texture.c @@ -873,3 +873,18 @@ void vita2d_draw_array_textured(const vita2d_texture *texture, SceGxmPrimitiveTy sceGxmSetVertexStream(_vita2d_context, 0, vertices); sceGxmDraw(_vita2d_context, mode, SCE_GXM_INDEX_FORMAT_U16, vita2d_get_linear_indices(), count); } + +void vita2d_draw_array_textured_mat(const vita2d_texture *texture, const vita2d_texture_tint_vertex *vertices, size_t count, float *mat) +{ + set_texture_tint_program(); + + void *vertex_wvp_buffer; + sceGxmReserveVertexDefaultUniformBuffer(_vita2d_context, &vertex_wvp_buffer); + sceGxmSetUniformDataF(vertex_wvp_buffer, _vita2d_textureWvpParam, 0, 16, mat); + + // Set the texture to the TEXUNIT0 + sceGxmSetFragmentTexture(_vita2d_context, 0, &texture->gxm_tex); + + sceGxmSetVertexStream(_vita2d_context, 0, vertices); + sceGxmDraw(_vita2d_context, SCE_GXM_PRIMITIVE_TRIANGLE_STRIP, SCE_GXM_INDEX_FORMAT_U16, vita2d_get_linear_indices(), count); +} \ No newline at end of file