1 #include "rs_core.rsh" 2 #include "rs_graphics.rsh" 3 #include "rs_structs.h" 4 5 /** 6 * Mesh 7 */ 8 extern uint32_t __attribute__((overloadable)) 9 rsgMeshGetVertexAllocationCount(rs_mesh m) { 10 Mesh_t *mesh = (Mesh_t *)m.p; 11 if (mesh == NULL) { 12 return 0; 13 } 14 return mesh->mHal.state.vertexBuffersCount; 15 } 16 17 extern uint32_t __attribute__((overloadable)) 18 rsgMeshGetPrimitiveCount(rs_mesh m) { 19 Mesh_t *mesh = (Mesh_t *)m.p; 20 if (mesh == NULL) { 21 return 0; 22 } 23 return mesh->mHal.state.primitivesCount; 24 } 25 26 extern rs_allocation __attribute__((overloadable)) 27 rsgMeshGetVertexAllocation(rs_mesh m, uint32_t index) { 28 Mesh_t *mesh = (Mesh_t *)m.p; 29 if (mesh == NULL || index >= mesh->mHal.state.vertexBuffersCount) { 30 rs_allocation nullAlloc = {0}; 31 return nullAlloc; 32 } 33 rs_allocation returnAlloc = {mesh->mHal.state.vertexBuffers[index]}; 34 return returnAlloc; 35 } 36 37 extern rs_allocation __attribute__((overloadable)) 38 rsgMeshGetIndexAllocation(rs_mesh m, uint32_t index) { 39 Mesh_t *mesh = (Mesh_t *)m.p; 40 if (mesh == NULL || index >= mesh->mHal.state.primitivesCount) { 41 rs_allocation nullAlloc = {0}; 42 return nullAlloc; 43 } 44 rs_allocation returnAlloc = {mesh->mHal.state.indexBuffers[index]}; 45 return returnAlloc; 46 } 47 48 extern rs_primitive __attribute__((overloadable)) 49 rsgMeshGetPrimitive(rs_mesh m, uint32_t index) { 50 Mesh_t *mesh = (Mesh_t *)m.p; 51 if (mesh == NULL || index >= mesh->mHal.state.primitivesCount) { 52 return RS_PRIMITIVE_INVALID; 53 } 54 return mesh->mHal.state.primitives[index]; 55 } 56