summaryrefslogtreecommitdiff
path: root/src/mesh.h
blob: 451803e7f2681495a0f1555da1854d38887a3080 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#pragma once

#include <GL/gl.h>

#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);