#ifndef _PIUMA_RENDER_2D_H_ #define _PIUMA_RENDER_2D_H_ #include "../lib/types.h" #include "../lib/math.h" #include "../lib/geometry.h" #include "primitives.h" // Immediate functions: less efficient but easy to use void r_2d_immediate_segment(v2 a, v2 b, v4 a_color, v4 b_color, f32 thickness = 1.0f); void r_2d_immediate_polygonal_chain(u64 count, v2 *vertices, v4 color, f32 thickness = 1.0f); void r_2d_immediate_triangle(v2 a, v2 b, v2 c, v4 a_color, v4 b_color, v4 c_color, v2 a_uv = {0,0}, v2 b_uv = {0,0}, v2 c_uv = {0,0}, r_texture *texture = NULL); void r_2d_immediate_quad(v2 a, v2 b, v2 c, v2 d, v4 color, v2 a_uv = {0,0}, v2 b_uv = {0,0}, v2 c_uv = {0,0}, v2 d_uv = {0,0}, r_texture *texture = NULL); void r_2d_immediate_rectangle(Rect r, v4 color, Rect uv = {0,0,1,1}, r_texture *texture = NULL); void r_2d_immediate_rounded_rectangle(Rect r, f32 radius, v4 color); void r_2d_immediate_mesh(u64 count, v2 *vertices, v4 color, v2 *uvs = NULL, r_texture *texture = NULL); void r_2d_immediate_rectangle_outline(Rect r, v4 color, f32 thickness = 1.0f); void r_2d_immediate_rounded_rectangle_outline(Rect r, f32 radius, v4 color, f32 thickness = 1.0f); // Draw functions: usual interface (create objects / send to gpu, draw call, remove from gpu) void r_2d_draw_mesh(r_2d_mesh *mesh, r_texture *texture); // @Feature: @Performance: something for text rendering (a lot of quads/rects) // Maybe we could send to the gpu the following: texture of the characters, array of uvs for indexing the texture, character position + index of its uv. #endif