src/mesh.c

changeset 122
1b118cd3e369
parent 118
830608f7e7d9
equal deleted inserted replaced
121:ede9a9e92ff9 122:1b118cd3e369
25 * POSSIBILITY OF SUCH DAMAGE. 25 * POSSIBILITY OF SUCH DAMAGE.
26 */ 26 */
27 27
28 #include "ascension/error.h" 28 #include "ascension/error.h"
29 #include "ascension/mesh.h" 29 #include "ascension/mesh.h"
30
31 #include <cx/allocator.h>
30 32
31 #include <GL/glew.h> 33 #include <GL/glew.h>
32 34
33 void asc_mesh_allocate_buffers(AscMesh *mesh, unsigned count) { 35 void asc_mesh_allocate_buffers(AscMesh *mesh, unsigned count) {
34 asc_dprintf("Allocate mesh buffers for %u meshes.", count); 36 asc_dprintf("Allocate mesh buffers for %u meshes.", count);
70 #endif 72 #endif
71 } 73 }
72 74
73 void asc_mesh_destroy(AscMesh *mesh) { 75 void asc_mesh_destroy(AscMesh *mesh) {
74 asc_mesh_free_buffers(mesh, 1); 76 asc_mesh_free_buffers(mesh, 1);
75 free(mesh->vtx_data); 77 cxFreeDefault(mesh->vtx_data);
76 } 78 }
77 79
78 void asc_mesh_init_plane_2d(AscMesh *mesh, struct asc_mesh_init_plane_2d_args args) { 80 void asc_mesh_init_plane_2d(AscMesh *mesh, struct asc_mesh_init_plane_2d_args args) {
79 if (mesh->vbo == 0) { 81 if (mesh->vbo == 0) {
80 asc_mesh_allocate_buffers(mesh, 1); 82 asc_mesh_allocate_buffers(mesh, 1);
82 84
83 unsigned required_memory = 4 * sizeof(AscMeshVertex2d); 85 unsigned required_memory = 4 * sizeof(AscMeshVertex2d);
84 86
85 // free any previous data 87 // free any previous data
86 if (mesh->vtx_data && mesh->vtx_data_size < required_memory) { 88 if (mesh->vtx_data && mesh->vtx_data_size < required_memory) {
87 free(mesh->vtx_data); 89 cxFreeDefault(mesh->vtx_data);
88 mesh->vtx_data = NULL; 90 mesh->vtx_data = NULL;
89 } 91 }
90 92
91 // allocate memory 93 // allocate memory
92 AscMeshVertex2d *data; 94 AscMeshVertex2d *data;
93 if (mesh->vtx_data == NULL) { 95 if (mesh->vtx_data == NULL) {
94 asc_dprintf("Create plane in VBO %u and VAO %u", mesh->vbo, mesh->vao); 96 asc_dprintf("Create plane in VBO %u and VAO %u", mesh->vbo, mesh->vao);
95 mesh->vtx_data_size = required_memory; 97 mesh->vtx_data_size = required_memory;
96 data = malloc(mesh->vtx_data_size); 98 data = cxMallocDefault(mesh->vtx_data_size);
97 mesh->vtx_data = (float*) data; 99 mesh->vtx_data = (float*) data;
98 } else { 100 } else {
99 data = (AscMeshVertex2d*) mesh->vtx_data; 101 data = (AscMeshVertex2d*) mesh->vtx_data;
100 } 102 }
101 mesh->vtx_count = 4; 103 mesh->vtx_count = 4;

mercurial