#pragma once #include #define MAX_VBOS 4 typedef struct { GLuint vao; GLuint vbos[MAX_VBOS]; int vbos_count; int vertex_count; } Mesh; void mesh_init(Mesh *mesh, int vertex_count); void mesh_storef(Mesh *mesh, float *data, int count, int dimensions); void mesh_storei(Mesh *mesh, int *data, int count, int dimensions); void mesh_storeu(Mesh *mesh, unsigned int *data, int count, int dimensions); void mesh_storeb(Mesh *mesh, unsigned char *data, int count, int dimensions); void mesh_finish(void); void mesh_bind(Mesh *mesh); void mesh_unbind(Mesh *mesh); void mesh_draw(Mesh *mesh); void mesh_draw_instanced(Mesh *mesh, int count); void mesh_free(Mesh *mesh); typedef struct { GLuint id; } Uniform; void uniform_init(Uniform *uniform, void *data, int len); void uniform_free(Uniform *uniform);