26 */ |
26 */ |
27 |
27 |
28 #ifndef ASCENSION_MESH_H |
28 #ifndef ASCENSION_MESH_H |
29 #define ASCENSION_MESH_H |
29 #define ASCENSION_MESH_H |
30 |
30 |
|
31 #include "datatypes.h" |
|
32 |
|
33 enum AscMeshType { |
|
34 ASC_MESH_2D, |
|
35 ASC_MESH_2D_COLORED, |
|
36 ASC_MESH_3D, |
|
37 ASC_MESH_3D_COLORED, |
|
38 }; |
|
39 |
31 typedef struct AscMesh { |
40 typedef struct AscMesh { |
|
41 // TODO: for batched rendering, VAO and VBO must not be part of the mesh |
32 unsigned vbo; |
42 unsigned vbo; |
33 unsigned vao; |
43 unsigned vao; |
34 unsigned vertices; |
44 enum AscMeshType type; |
|
45 unsigned vtx_count; |
|
46 float *vtx_data; |
35 } AscMesh; |
47 } AscMesh; |
|
48 |
|
49 typedef struct AscMeshVertex2d { |
|
50 asc_vec2f pos; |
|
51 asc_vec2f uv; |
|
52 } AscMeshVertex2d; |
|
53 |
|
54 typedef struct AscMeshVertex2dColored { |
|
55 asc_vec2f pos; |
|
56 asc_vec2f uv; |
|
57 asc_col4f color; |
|
58 } AscMeshVertex2dColored; |
|
59 |
|
60 typedef struct AscMeshVertex3d { |
|
61 asc_vec3f pos; |
|
62 asc_vec2f uv; |
|
63 } AscMeshVertex3d; |
|
64 |
|
65 typedef struct AscMeshVertex3dColored { |
|
66 asc_vec3f pos; |
|
67 asc_vec2f uv; |
|
68 asc_col4f color; |
|
69 } AscMeshVertex3dColored; |
|
70 |
|
71 |
|
72 void asc_mesh_destroy(AscMesh *mesh); |
|
73 |
|
74 |
|
75 /** |
|
76 * Creates a 2D plane. |
|
77 * |
|
78 * @param mesh the mesh to initialize |
|
79 */ |
|
80 void asc_mesh_plane_2d(AscMesh *mesh); |
|
81 |
|
82 |
|
83 |
|
84 // TODO: replace below functions with a batched rendering implementation |
36 |
85 |
37 /** |
86 /** |
38 * Allocates VBO and VAO for one or more meshes. |
87 * Allocates VBO and VAO for one or more meshes. |
39 * |
88 * |
40 * @param mesh pointer to a mesh or an array of meshes |
89 * @param mesh pointer to a mesh or an array of meshes |