use static, fixed arrays for circle geometry data instead of allocating for each one

This commit is contained in:
2024-10-13 22:32:59 -03:00
parent ffab6a3924
commit f7f27119e1
5 changed files with 18 additions and 23 deletions

View File

@ -22,18 +22,14 @@ void draw_circle(Vec2 position, float radius, Color color) {
arrput(ctx.render_queue_2d, primitive);
}
/* TODO: caching and reuse scheme */
/* vertices_out and indices_out MUST BE FREED */
void create_circle_geometry(Vec2 position,
Color color,
float radius,
size_t num_vertices,
SDL_Vertex **vertices_out,
int **indices_out)
SDL_Vertex vertices[],
int indices[])
{
SDL_Vertex *vertices = cmalloc(sizeof *vertices * (num_vertices + 1));
int *indices = cmalloc(sizeof *indices * (num_vertices * 3));
/* the angle (in radians) to rotate by on each iteration */
float seg_rotation_angle = (360.0f / (float)num_vertices) * ((float)M_PI / 180);
@ -82,7 +78,4 @@ void create_circle_geometry(Vec2 position,
index = num_vertices;
indices[triangle_offset + 2] = (int)index;
}
*vertices_out = vertices;
*indices_out = indices;
}