@ -651,7 +651,7 @@ Model LoadModel(const char *fileName)
TraceLog ( LOG_WARNING , " [%s] No meshes can be loaded, default to cube mesh " , fileName ) ;
model . meshCount = 1 ;
model . meshes = ( Mesh * ) calloc ( model . meshCount , sizeof ( Mesh ) ) ;
model . meshes = ( Mesh * ) RL_CALLOC ( model . meshCount , sizeof ( Mesh ) ) ;
model . meshes [ 0 ] = GenMeshCube ( 1.0f , 1.0f , 1.0f ) ;
}
else
@ -665,10 +665,10 @@ Model LoadModel(const char *fileName)
TraceLog ( LOG_WARNING , " [%s] No materials can be loaded, default to white material " , fileName ) ;
model . materialCount = 1 ;
model . materials = ( Material * ) calloc ( model . materialCount , sizeof ( Material ) ) ;
model . materials = ( Material * ) RL_CALLOC ( model . materialCount , sizeof ( Material ) ) ;
model . materials [ 0 ] = LoadMaterialDefault ( ) ;
model . meshMaterial = ( int * ) calloc ( model . meshCount , sizeof ( int ) ) ;
model . meshMaterial = ( int * ) RL_CALLOC ( model . meshCount , sizeof ( int ) ) ;
}
return model ;
@ -685,14 +685,14 @@ Model LoadModelFromMesh(Mesh mesh)
model . transform = MatrixIdentity ( ) ;
model . meshCount = 1 ;
model . meshes = ( Mesh * ) malloc ( model . meshCount * sizeof ( Mesh ) ) ;
model . meshes = ( Mesh * ) RL_MALLOC ( model . meshCount * sizeof ( Mesh ) ) ;
model . meshes [ 0 ] = mesh ;
model . materialCount = 1 ;
model . materials = ( Material * ) malloc ( model . materialCount * sizeof ( Material ) ) ;
model . materials = ( Material * ) RL_MALLOC ( model . materialCount * sizeof ( Material ) ) ;
model . materials [ 0 ] = LoadMaterialDefault ( ) ;
model . meshMaterial = ( int * ) malloc ( model . meshCount * sizeof ( int ) ) ;
model . meshMaterial = ( int * ) RL_MALLOC ( model . meshCount * sizeof ( int ) ) ;
model . meshMaterial [ 0 ] = 0 ; / / First material index
return model ;
@ -704,13 +704,13 @@ void UnloadModel(Model model)
for ( int i = 0 ; i < model . meshCount ; i + + ) UnloadMesh ( & model . meshes [ i ] ) ;
for ( int i = 0 ; i < model . materialCount ; i + + ) UnloadMaterial ( model . materials [ i ] ) ;
free ( model . meshes ) ;
free ( model . materials ) ;
free ( model . meshMaterial ) ;
RL_FREE ( model . meshes ) ;
RL_FREE ( model . materials ) ;
RL_FREE ( model . meshMaterial ) ;
/ / Unload animation data
free ( model . bones ) ;
free ( model . bindPose ) ;
RL_FREE ( model . bones ) ;
RL_FREE ( model . bindPose ) ;
TraceLog ( LOG_INFO , " Unloaded model data from RAM and VRAM " ) ;
}
@ -866,7 +866,7 @@ void SetModelMeshMaterial(Model *model, int meshId, int materialId)
/ / Load model animations from file
ModelAnimation * LoadModelAnimations ( const char * filename , int * animCount )
{
ModelAnimation * animations = ( ModelAnimation * ) malloc ( 1 * sizeof ( ModelAnimation ) ) ;
ModelAnimation * animations = ( ModelAnimation * ) RL_MALLOC ( 1 * sizeof ( ModelAnimation ) ) ;
int count = 1 ;
# define IQM_MAGIC "INTERQUAKEMODEL" / / IQM file magic number
@ -935,12 +935,12 @@ ModelAnimation *LoadModelAnimations(const char *filename, int *animCount)
/ / bones
IQMPose * poses ;
poses = malloc ( sizeof ( IQMPose ) * iqm . num_poses ) ;
poses = RL_MALLOC ( sizeof ( IQMPose ) * iqm . num_poses ) ;
fseek ( iqmFile , iqm . ofs_poses , SEEK_SET ) ;
fread ( poses , sizeof ( IQMPose ) * iqm . num_poses , 1 , iqmFile ) ;
animation . boneCount = iqm . num_poses ;
animation . bones = malloc ( sizeof ( BoneInfo ) * iqm . num_poses ) ;
animation . bones = RL_MALLOC ( sizeof ( BoneInfo ) * iqm . num_poses ) ;
for ( int j = 0 ; j < iqm . num_poses ; j + + )
{
@ -957,12 +957,12 @@ ModelAnimation *LoadModelAnimations(const char *filename, int *animCount)
/ / animation . framerate = anim . framerate ;
/ / frameposes
unsigned short * framedata = malloc ( sizeof ( unsigned short ) * iqm . num_frames * iqm . num_framechannels ) ;
unsigned short * framedata = RL_MALLOC ( sizeof ( unsigned short ) * iqm . num_frames * iqm . num_framechannels ) ;
fseek ( iqmFile , iqm . ofs_frames , SEEK_SET ) ;
fread ( framedata , sizeof ( unsigned short ) * iqm . num_frames * iqm . num_framechannels , 1 , iqmFile ) ;
animation . framePoses = malloc ( sizeof ( Transform * ) * anim . num_frames ) ;
for ( int j = 0 ; j < anim . num_frames ; j + + ) animation . framePoses [ j ] = malloc ( sizeof ( Transform ) * iqm . num_poses ) ;
animation . framePoses = RL_MALLOC ( sizeof ( Transform * ) * anim . num_frames ) ;
for ( int j = 0 ; j < anim . num_frames ; j + + ) animation . framePoses [ j ] = RL_MALLOC ( sizeof ( Transform ) * iqm . num_poses ) ;
int dcounter = anim . first_frame * iqm . num_framechannels ;
@ -1069,8 +1069,8 @@ ModelAnimation *LoadModelAnimations(const char *filename, int *animCount)
}
}
free ( framedata ) ;
free ( poses ) ;
RL_FREE ( framedata ) ;
RL_FREE ( poses ) ;
fclose ( iqmFile ) ;
@ -1145,10 +1145,10 @@ void UpdateModelAnimation(Model model, ModelAnimation anim, int frame)
/ / Unload animation data
void UnloadModelAnimation ( ModelAnimation anim )
{
for ( int i = 0 ; i < anim . frameCount ; i + + ) free ( anim . framePoses [ i ] ) ;
for ( int i = 0 ; i < anim . frameCount ; i + + ) RL_FREE ( anim . framePoses [ i ] ) ;
free ( anim . bones ) ;
free ( anim . framePoses ) ;
RL_FREE ( anim . bones ) ;
RL_FREE ( anim . framePoses ) ;
}
/ / Check model animation skeleton match
@ -1177,7 +1177,7 @@ Mesh GenMeshPoly(int sides, float radius)
int vertexCount = sides * 3 ;
/ / Vertices definition
Vector3 * vertices = ( Vector3 * ) malloc ( vertexCount * sizeof ( Vector3 ) ) ;
Vector3 * vertices = ( Vector3 * ) RL_MALLOC ( vertexCount * sizeof ( Vector3 ) ) ;
for ( int i = 0 , v = 0 ; i < 360 ; i + = 360 / sides , v + = 3 )
{
vertices [ v ] = ( Vector3 ) { 0.0f , 0.0f , 0.0f } ;
@ -1186,18 +1186,18 @@ Mesh GenMeshPoly(int sides, float radius)
}
/ / Normals definition
Vector3 * normals = ( Vector3 * ) malloc ( vertexCount * sizeof ( Vector3 ) ) ;
Vector3 * normals = ( Vector3 * ) RL_MALLOC ( vertexCount * sizeof ( Vector3 ) ) ;
for ( int n = 0 ; n < vertexCount ; n + + ) normals [ n ] = ( Vector3 ) { 0.0f , 1.0f , 0.0f } ; / / Vector3 . up ;
/ / TexCoords definition
Vector2 * texcoords = ( Vector2 * ) malloc ( vertexCount * sizeof ( Vector2 ) ) ;
Vector2 * texcoords = ( Vector2 * ) RL_MALLOC ( vertexCount * sizeof ( Vector2 ) ) ;
for ( int n = 0 ; n < vertexCount ; n + + ) texcoords [ n ] = ( Vector2 ) { 0.0f , 0.0f } ;
mesh . vertexCount = vertexCount ;
mesh . triangleCount = sides ;
mesh . vertices = ( float * ) malloc ( mesh . vertexCount * 3 * sizeof ( float ) ) ;
mesh . texcoords = ( float * ) malloc ( mesh . vertexCount * 2 * sizeof ( float ) ) ;
mesh . normals = ( float * ) malloc ( mesh . vertexCount * 3 * sizeof ( float ) ) ;
mesh . vertices = ( float * ) RL_MALLOC ( mesh . vertexCount * 3 * sizeof ( float ) ) ;
mesh . texcoords = ( float * ) RL_MALLOC ( mesh . vertexCount * 2 * sizeof ( float ) ) ;
mesh . normals = ( float * ) RL_MALLOC ( mesh . vertexCount * 3 * sizeof ( float ) ) ;
/ / Mesh vertices position array
for ( int i = 0 ; i < mesh . vertexCount ; i + + )
@ -1222,9 +1222,9 @@ Mesh GenMeshPoly(int sides, float radius)
mesh . normals [ 3 * i + 2 ] = normals [ i ] . z ;
}
free ( vertices ) ;
free ( normals ) ;
free ( texcoords ) ;
RL_FREE ( vertices ) ;
RL_FREE ( normals ) ;
RL_FREE ( texcoords ) ;
/ / Upload vertex data to GPU ( static mesh )
rlLoadMesh ( & mesh , false ) ;
@ -1245,7 +1245,7 @@ Mesh GenMeshPlane(float width, float length, int resX, int resZ)
/ / Vertices definition
int vertexCount = resX * resZ ; / / vertices get reused for the faces
Vector3 * vertices = ( Vector3 * ) malloc ( vertexCount * sizeof ( Vector3 ) ) ;
Vector3 * vertices = ( Vector3 * ) RL_MALLOC ( vertexCount * sizeof ( Vector3 ) ) ;
for ( int z = 0 ; z < resZ ; z + + )
{
/ / [ - length / 2 , length / 2 ]
@ -1259,11 +1259,11 @@ Mesh GenMeshPlane(float width, float length, int resX, int resZ)
}
/ / Normals definition
Vector3 * normals = ( Vector3 * ) malloc ( vertexCount * sizeof ( Vector3 ) ) ;
Vector3 * normals = ( Vector3 * ) RL_MALLOC ( vertexCount * sizeof ( Vector3 ) ) ;
for ( int n = 0 ; n < vertexCount ; n + + ) normals [ n ] = ( Vector3 ) { 0.0f , 1.0f , 0.0f } ; / / Vector3 . up ;
/ / TexCoords definition
Vector2 * texcoords = ( Vector2 * ) malloc ( vertexCount * sizeof ( Vector2 ) ) ;
Vector2 * texcoords = ( Vector2 * ) RL_MALLOC ( vertexCount * sizeof ( Vector2 ) ) ;
for ( int v = 0 ; v < resZ ; v + + )
{
for ( int u = 0 ; u < resX ; u + + )
@ -1274,7 +1274,7 @@ Mesh GenMeshPlane(float width, float length, int resX, int resZ)
/ / Triangles definition ( indices )
int numFaces = ( resX - 1 ) * ( resZ - 1 ) ;
int * triangles = ( int * ) malloc ( numFaces * 6 * sizeof ( int ) ) ;
int * triangles = ( int * ) RL_MALLOC ( numFaces * 6 * sizeof ( int ) ) ;
int t = 0 ;
for ( int face = 0 ; face < numFaces ; face + + )
{
@ -1292,10 +1292,10 @@ Mesh GenMeshPlane(float width, float length, int resX, int resZ)
mesh . vertexCount = vertexCount ;
mesh . triangleCount = numFaces * 2 ;
mesh . vertices = ( float * ) malloc ( mesh . vertexCount * 3 * sizeof ( float ) ) ;
mesh . texcoords = ( float * ) malloc ( mesh . vertexCount * 2 * sizeof ( float ) ) ;
mesh . normals = ( float * ) malloc ( mesh . vertexCount * 3 * sizeof ( float ) ) ;
mesh . indices = ( unsigned short * ) malloc ( mesh . triangleCount * 3 * sizeof ( unsigned short ) ) ;
mesh . vertices = ( float * ) RL_MALLOC ( mesh . vertexCount * 3 * sizeof ( float ) ) ;
mesh . texcoords = ( float * ) RL_MALLOC ( mesh . vertexCount * 2 * sizeof ( float ) ) ;
mesh . normals = ( float * ) RL_MALLOC ( mesh . vertexCount * 3 * sizeof ( float ) ) ;
mesh . indices = ( unsigned short * ) RL_MALLOC ( mesh . triangleCount * 3 * sizeof ( unsigned short ) ) ;
/ / Mesh vertices position array
for ( int i = 0 ; i < mesh . vertexCount ; i + + )
@ -1323,10 +1323,10 @@ Mesh GenMeshPlane(float width, float length, int resX, int resZ)
/ / Mesh indices array initialization
for ( int i = 0 ; i < mesh . triangleCount * 3 ; i + + ) mesh . indices [ i ] = triangles [ i ] ;
free ( vertices ) ;
free ( normals ) ;
free ( texcoords ) ;
free ( triangles ) ;
RL_FREE ( vertices ) ;
RL_FREE ( normals ) ;
RL_FREE ( texcoords ) ;
RL_FREE ( triangles ) ;
# else / / Use par_shapes library to generate plane mesh
@ -1335,9 +1335,9 @@ Mesh GenMeshPlane(float width, float length, int resX, int resZ)
par_shapes_rotate ( plane , - PI / 2.0f , ( float [ ] ) { 1 , 0 , 0 } ) ;
par_shapes_translate ( plane , - width / 2 , 0.0f , length / 2 ) ;
mesh . vertices = ( float * ) malloc ( plane - > ntriangles * 3 * 3 * sizeof ( float ) ) ;
mesh . texcoords = ( float * ) malloc ( plane - > ntriangles * 3 * 2 * sizeof ( float ) ) ;
mesh . normals = ( float * ) malloc ( plane - > ntriangles * 3 * 3 * sizeof ( float ) ) ;
mesh . vertices = ( float * ) RL_MALLOC ( plane - > ntriangles * 3 * 3 * sizeof ( float ) ) ;
mesh . texcoords = ( float * ) RL_MALLOC ( plane - > ntriangles * 3 * 2 * sizeof ( float ) ) ;
mesh . normals = ( float * ) RL_MALLOC ( plane - > ntriangles * 3 * 3 * sizeof ( float ) ) ;
mesh . vertexCount = plane - > ntriangles * 3 ;
mesh . triangleCount = plane - > ntriangles ;
@ -1453,16 +1453,16 @@ Mesh GenMeshCube(float width, float height, float length)
- 1.0f , 0.0f , 0.0f
} ;
mesh . vertices = ( float * ) malloc ( 24 * 3 * sizeof ( float ) ) ;
mesh . vertices = ( float * ) RL_MALLOC ( 24 * 3 * sizeof ( float ) ) ;
memcpy ( mesh . vertices , vertices , 24 * 3 * sizeof ( float ) ) ;
mesh . texcoords = ( float * ) malloc ( 24 * 2 * sizeof ( float ) ) ;
mesh . texcoords = ( float * ) RL_MALLOC ( 24 * 2 * sizeof ( float ) ) ;
memcpy ( mesh . texcoords , texcoords , 24 * 2 * sizeof ( float ) ) ;
mesh . normals = ( float * ) malloc ( 24 * 3 * sizeof ( float ) ) ;
mesh . normals = ( float * ) RL_MALLOC ( 24 * 3 * sizeof ( float ) ) ;
memcpy ( mesh . normals , normals , 24 * 3 * sizeof ( float ) ) ;
mesh . indices = ( unsigned short * ) malloc ( 36 * sizeof ( unsigned short ) ) ;
mesh . indices = ( unsigned short * ) RL_MALLOC ( 36 * sizeof ( unsigned short ) ) ;
int k = 0 ;
@ -1500,9 +1500,9 @@ par_shapes_mesh* par_shapes_create_icosahedron(); // 20 sides polyhedron
par_shapes_translate ( cube , - width / 2 , 0.0f , - length / 2 ) ;
par_shapes_compute_normals ( cube ) ;
mesh . vertices = ( float * ) malloc ( cube - > ntriangles * 3 * 3 * sizeof ( float ) ) ;
mesh . texcoords = ( float * ) malloc ( cube - > ntriangles * 3 * 2 * sizeof ( float ) ) ;
mesh . normals = ( float * ) malloc ( cube - > ntriangles * 3 * 3 * sizeof ( float ) ) ;
mesh . vertices = ( float * ) RL_MALLOC ( cube - > ntriangles * 3 * 3 * sizeof ( float ) ) ;
mesh . texcoords = ( float * ) RL_MALLOC ( cube - > ntriangles * 3 * 2 * sizeof ( float ) ) ;
mesh . normals = ( float * ) RL_MALLOC ( cube - > ntriangles * 3 * 3 * sizeof ( float ) ) ;
mesh . vertexCount = cube - > ntriangles * 3 ;
mesh . triangleCount = cube - > ntriangles ;
@ -1539,9 +1539,9 @@ RLAPI Mesh GenMeshSphere(float radius, int rings, int slices)
par_shapes_scale ( sphere , radius , radius , radius ) ;
/ / NOTE : Soft normals are computed internally
mesh . vertices = ( float * ) malloc ( sphere - > ntriangles * 3 * 3 * sizeof ( float ) ) ;
mesh . texcoords = ( float * ) malloc ( sphere - > ntriangles * 3 * 2 * sizeof ( float ) ) ;
mesh . normals = ( float * ) malloc ( sphere - > ntriangles * 3 * 3 * sizeof ( float ) ) ;
mesh . vertices = ( float * ) RL_MALLOC ( sphere - > ntriangles * 3 * 3 * sizeof ( float ) ) ;
mesh . texcoords = ( float * ) RL_MALLOC ( sphere - > ntriangles * 3 * 2 * sizeof ( float ) ) ;
mesh . normals = ( float * ) RL_MALLOC ( sphere - > ntriangles * 3 * 3 * sizeof ( float ) ) ;
mesh . vertexCount = sphere - > ntriangles * 3 ;
mesh . triangleCount = sphere - > ntriangles ;
@ -1577,9 +1577,9 @@ RLAPI Mesh GenMeshHemiSphere(float radius, int rings, int slices)
par_shapes_scale ( sphere , radius , radius , radius ) ;
/ / NOTE : Soft normals are computed internally
mesh . vertices = ( float * ) malloc ( sphere - > ntriangles * 3 * 3 * sizeof ( float ) ) ;
mesh . texcoords = ( float * ) malloc ( sphere - > ntriangles * 3 * 2 * sizeof ( float ) ) ;
mesh . normals = ( float * ) malloc ( sphere - > ntriangles * 3 * 3 * sizeof ( float ) ) ;
mesh . vertices = ( float * ) RL_MALLOC ( sphere - > ntriangles * 3 * 3 * sizeof ( float ) ) ;
mesh . texcoords = ( float * ) RL_MALLOC ( sphere - > ntriangles * 3 * 2 * sizeof ( float ) ) ;
mesh . normals = ( float * ) RL_MALLOC ( sphere - > ntriangles * 3 * 3 * sizeof ( float ) ) ;
mesh . vertexCount = sphere - > ntriangles * 3 ;
mesh . triangleCount = sphere - > ntriangles ;
@ -1635,9 +1635,9 @@ Mesh GenMeshCylinder(float radius, float height, int slices)
par_shapes_merge_and_free ( cylinder , capTop ) ;
par_shapes_merge_and_free ( cylinder , capBottom ) ;
mesh . vertices = ( float * ) malloc ( cylinder - > ntriangles * 3 * 3 * sizeof ( float ) ) ;
mesh . texcoords = ( float * ) malloc ( cylinder - > ntriangles * 3 * 2 * sizeof ( float ) ) ;
mesh . normals = ( float * ) malloc ( cylinder - > ntriangles * 3 * 3 * sizeof ( float ) ) ;
mesh . vertices = ( float * ) RL_MALLOC ( cylinder - > ntriangles * 3 * 3 * sizeof ( float ) ) ;
mesh . texcoords = ( float * ) RL_MALLOC ( cylinder - > ntriangles * 3 * 2 * sizeof ( float ) ) ;
mesh . normals = ( float * ) RL_MALLOC ( cylinder - > ntriangles * 3 * 3 * sizeof ( float ) ) ;
mesh . vertexCount = cylinder - > ntriangles * 3 ;
mesh . triangleCount = cylinder - > ntriangles ;
@ -1677,9 +1677,9 @@ Mesh GenMeshTorus(float radius, float size, int radSeg, int sides)
par_shapes_mesh * torus = par_shapes_create_torus ( radSeg , sides , radius ) ;
par_shapes_scale ( torus , size / 2 , size / 2 , size / 2 ) ;
mesh . vertices = ( float * ) malloc ( torus - > ntriangles * 3 * 3 * sizeof ( float ) ) ;
mesh . texcoords = ( float * ) malloc ( torus - > ntriangles * 3 * 2 * sizeof ( float ) ) ;
mesh . normals = ( float * ) malloc ( torus - > ntriangles * 3 * 3 * sizeof ( float ) ) ;
mesh . vertices = ( float * ) RL_MALLOC ( torus - > ntriangles * 3 * 3 * sizeof ( float ) ) ;
mesh . texcoords = ( float * ) RL_MALLOC ( torus - > ntriangles * 3 * 2 * sizeof ( float ) ) ;
mesh . normals = ( float * ) RL_MALLOC ( torus - > ntriangles * 3 * 3 * sizeof ( float ) ) ;
mesh . vertexCount = torus - > ntriangles * 3 ;
mesh . triangleCount = torus - > ntriangles ;
@ -1717,9 +1717,9 @@ Mesh GenMeshKnot(float radius, float size, int radSeg, int sides)
par_shapes_mesh * knot = par_shapes_create_trefoil_knot ( radSeg , sides , radius ) ;
par_shapes_scale ( knot , size , size , size ) ;
mesh . vertices = ( float * ) malloc ( knot - > ntriangles * 3 * 3 * sizeof ( float ) ) ;
mesh . texcoords = ( float * ) malloc ( knot - > ntriangles * 3 * 2 * sizeof ( float ) ) ;
mesh . normals = ( float * ) malloc ( knot - > ntriangles * 3 * 3 * sizeof ( float ) ) ;
mesh . vertices = ( float * ) RL_MALLOC ( knot - > ntriangles * 3 * 3 * sizeof ( float ) ) ;
mesh . texcoords = ( float * ) RL_MALLOC ( knot - > ntriangles * 3 * 2 * sizeof ( float ) ) ;
mesh . normals = ( float * ) RL_MALLOC ( knot - > ntriangles * 3 * 3 * sizeof ( float ) ) ;
mesh . vertexCount = knot - > ntriangles * 3 ;
mesh . triangleCount = knot - > ntriangles ;
@ -1764,9 +1764,9 @@ Mesh GenMeshHeightmap(Image heightmap, Vector3 size)
mesh . vertexCount = mesh . triangleCount * 3 ;
mesh . vertices = ( float * ) malloc ( mesh . vertexCount * 3 * sizeof ( float ) ) ;
mesh . normals = ( float * ) malloc ( mesh . vertexCount * 3 * sizeof ( float ) ) ;
mesh . texcoords = ( float * ) malloc ( mesh . vertexCount * 2 * sizeof ( float ) ) ;
mesh . vertices = ( float * ) RL_MALLOC ( mesh . vertexCount * 3 * sizeof ( float ) ) ;
mesh . normals = ( float * ) RL_MALLOC ( mesh . vertexCount * 3 * sizeof ( float ) ) ;
mesh . texcoords = ( float * ) RL_MALLOC ( mesh . vertexCount * 2 * sizeof ( float ) ) ;
mesh . colors = NULL ;
int vCounter = 0 ; / / Used to count vertices float by float
@ -1848,7 +1848,7 @@ Mesh GenMeshHeightmap(Image heightmap, Vector3 size)
}
}
free ( pixels ) ;
RL_FREE ( pixels ) ;
/ / Upload vertex data to GPU ( static mesh )
rlLoadMesh ( & mesh , false ) ;
@ -1878,9 +1878,9 @@ Mesh GenMeshCubicmap(Image cubicmap, Vector3 cubeSize)
float h = cubeSize . z ;
float h2 = cubeSize . y ;
Vector3 * mapVertices = ( Vector3 * ) malloc ( maxTriangles * 3 * sizeof ( Vector3 ) ) ;
Vector2 * mapTexcoords = ( Vector2 * ) malloc ( maxTriangles * 3 * sizeof ( Vector2 ) ) ;
Vector3 * mapNormals = ( Vector3 * ) malloc ( maxTriangles * 3 * sizeof ( Vector3 ) ) ;
Vector3 * mapVertices = ( Vector3 * ) RL_MALLOC ( maxTriangles * 3 * sizeof ( Vector3 ) ) ;
Vector2 * mapTexcoords = ( Vector2 * ) RL_MALLOC ( maxTriangles * 3 * sizeof ( Vector2 ) ) ;
Vector3 * mapNormals = ( Vector3 * ) RL_MALLOC ( maxTriangles * 3 * sizeof ( Vector3 ) ) ;
/ / Define the 6 normals of the cube , we will combine them accordingly later . . .
Vector3 n1 = { 1.0f , 0.0f , 0.0f } ;
@ -2167,9 +2167,9 @@ Mesh GenMeshCubicmap(Image cubicmap, Vector3 cubeSize)
mesh . vertexCount = vCounter ;
mesh . triangleCount = vCounter / 3 ;
mesh . vertices = ( float * ) malloc ( mesh . vertexCount * 3 * sizeof ( float ) ) ;
mesh . normals = ( float * ) malloc ( mesh . vertexCount * 3 * sizeof ( float ) ) ;
mesh . texcoords = ( float * ) malloc ( mesh . vertexCount * 2 * sizeof ( float ) ) ;
mesh . vertices = ( float * ) RL_MALLOC ( mesh . vertexCount * 3 * sizeof ( float ) ) ;
mesh . normals = ( float * ) RL_MALLOC ( mesh . vertexCount * 3 * sizeof ( float ) ) ;
mesh . texcoords = ( float * ) RL_MALLOC ( mesh . vertexCount * 2 * sizeof ( float ) ) ;
mesh . colors = NULL ;
int fCounter = 0 ;
@ -2204,11 +2204,11 @@ Mesh GenMeshCubicmap(Image cubicmap, Vector3 cubeSize)
fCounter + = 2 ;
}
free ( mapVertices ) ;
free ( mapNormals ) ;
free ( mapTexcoords ) ;
RL_FREE ( mapVertices ) ;
RL_FREE ( mapNormals ) ;
RL_FREE ( mapTexcoords ) ;
free ( cubicmapPixels ) ; / / Free image pixel data
RL_FREE ( cubicmapPixels ) ; / / Free image pixel data
/ / Upload vertex data to GPU ( static mesh )
rlLoadMesh ( & mesh , false ) ;
@ -2250,11 +2250,11 @@ BoundingBox MeshBoundingBox(Mesh mesh)
/ / Implementation base don : https : / / answers . unity . com / questions / 7789 / calculating - tangents - vector4 . html
void MeshTangents ( Mesh * mesh )
{
if ( mesh - > tangents = = NULL ) mesh - > tangents = ( float * ) malloc ( mesh - > vertexCount * 4 * sizeof ( float ) ) ;
if ( mesh - > tangents = = NULL ) mesh - > tangents = ( float * ) RL_MALLOC ( mesh - > vertexCount * 4 * sizeof ( float ) ) ;
else TraceLog ( LOG_WARNING , " Mesh tangents already exist " ) ;
Vector3 * tan1 = ( Vector3 * ) malloc ( mesh - > vertexCount * sizeof ( Vector3 ) ) ;
Vector3 * tan2 = ( Vector3 * ) malloc ( mesh - > vertexCount * sizeof ( Vector3 ) ) ;
Vector3 * tan1 = ( Vector3 * ) RL_MALLOC ( mesh - > vertexCount * sizeof ( Vector3 ) ) ;
Vector3 * tan2 = ( Vector3 * ) RL_MALLOC ( mesh - > vertexCount * sizeof ( Vector3 ) ) ;
for ( int i = 0 ; i < mesh - > vertexCount ; i + = 3 )
{
@ -2318,8 +2318,8 @@ void MeshTangents(Mesh *mesh)
# endif
}
free ( tan1 ) ;
free ( tan2 ) ;
RL_FREE ( tan1 ) ;
RL_FREE ( tan2 ) ;
/ / Load a new tangent attributes buffer
mesh - > vboId [ LOC_VERTEX_TANGENT ] = rlLoadAttribBuffer ( mesh - > vaoId , LOC_VERTEX_TANGENT , mesh - > tangents , mesh - > vertexCount * 4 * sizeof ( float ) , false ) ;
@ -2746,7 +2746,7 @@ static Model LoadOBJ(const char *fileName)
long length = ftell ( objFile ) ; / / Get file size
fseek ( objFile , 0 , SEEK_SET ) ; / / Reset file pointer
data = ( char * ) malloc ( length ) ;
data = ( char * ) RL_MALLOC ( length ) ;
fread ( data , length , 1 , objFile ) ;
dataLength = length ;
@ -2763,12 +2763,12 @@ static Model LoadOBJ(const char *fileName)
/ / Init model meshes array
model . meshCount = meshCount ;
model . meshes = ( Mesh * ) malloc ( model . meshCount * sizeof ( Mesh ) ) ;
model . meshes = ( Mesh * ) RL_MALLOC ( model . meshCount * sizeof ( Mesh ) ) ;
/ / Init model materials array
model . materialCount = materialCount ;
model . materials = ( Material * ) malloc ( model . materialCount * sizeof ( Material ) ) ;
model . meshMaterial = ( int * ) calloc ( model . meshCount , sizeof ( int ) ) ;
model . materials = ( Material * ) RL_MALLOC ( model . materialCount * sizeof ( Material ) ) ;
model . meshMaterial = ( int * ) RL_CALLOC ( model . meshCount , sizeof ( int ) ) ;
/*
/ / Multiple meshes data reference
@ -2787,9 +2787,9 @@ static Model LoadOBJ(const char *fileName)
memset ( & mesh , 0 , sizeof ( Mesh ) ) ;
mesh . vertexCount = attrib . num_faces * 3 ;
mesh . triangleCount = attrib . num_faces ;
mesh . vertices = ( float * ) malloc ( mesh . vertexCount * 3 * sizeof ( float ) ) ;
mesh . texcoords = ( float * ) malloc ( mesh . vertexCount * 2 * sizeof ( float ) ) ;
mesh . normals = ( float * ) malloc ( mesh . vertexCount * 3 * sizeof ( float ) ) ;
mesh . vertices = ( float * ) RL_MALLOC ( mesh . vertexCount * 3 * sizeof ( float ) ) ;
mesh . texcoords = ( float * ) RL_MALLOC ( mesh . vertexCount * 2 * sizeof ( float ) ) ;
mesh . normals = ( float * ) RL_MALLOC ( mesh . vertexCount * 3 * sizeof ( float ) ) ;
int vCount = 0 ;
int vtCount = 0 ;
@ -2934,17 +2934,26 @@ static Model LoadIQM(const char *fileName)
typedef struct IQMTriangle {
unsigned int vertex [ 3 ] ;
} IQMTriangle ;
/ / NOTE : Adjacency unused by default
typedef struct IQMAdjacency {
unsigned int triangle [ 3 ] ;
} IQMAdjacency ;
typedef struct IQMJoint {
unsigned int name ;
int parent ;
float translate [ 3 ] , rotate [ 4 ] , scale [ 3 ] ;
} IQMJoint ;
typedef struct IQMVertexArray {
unsigned int type ;
unsigned int flags ;
unsigned int format ;
unsigned int size ;
unsigned int offset ;
} IQMVertexArray ;
/ / NOTE : Below IQM structures are not used but listed for reference
/*
typedef struct IQMAdjacency {
unsigned int triangle [ 3 ] ;
} IQMAdjacency ;
typedef struct IQMPose {
int parent ;
@ -2960,19 +2969,11 @@ static Model LoadIQM(const char *fileName)
unsigned int flags ;
} IQMAnim ;
typedef struct IQMVertexArray {
unsigned int type ;
unsigned int flags ;
unsigned int format ;
unsigned int size ;
unsigned int offset ;
} IQMVertexArray ;
/ / NOTE : Bounds unused by default
typedef struct IQMBounds {
float bbmin [ 3 ] , bbmax [ 3 ] ;
float xyradius , radius ;
} IQMBounds ;
*/
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
/ / IQM vertex data types
@ -3028,12 +3029,12 @@ static Model LoadIQM(const char *fileName)
}
/ / Meshes data processing
imesh = malloc ( sizeof ( IQMMesh ) * iqm . num_meshes ) ;
imesh = RL_MALLOC ( sizeof ( IQMMesh ) * iqm . num_meshes ) ;
fseek ( iqmFile , iqm . ofs_meshes , SEEK_SET ) ;
fread ( imesh , sizeof ( IQMMesh ) * iqm . num_meshes , 1 , iqmFile ) ;
model . meshCount = iqm . num_meshes ;
model . meshes = malloc ( model . meshCount * sizeof ( Mesh ) ) ;
model . meshes = RL_MALLOC ( model . meshCount * sizeof ( Mesh ) ) ;
char name [ MESH_NAME_LENGTH ] ;
@ -3043,24 +3044,24 @@ static Model LoadIQM(const char *fileName)
fread ( name , sizeof ( char ) * MESH_NAME_LENGTH , 1 , iqmFile ) ; / / Mesh name not used . . .
model . meshes [ i ] . vertexCount = imesh [ i ] . num_vertexes ;
model . meshes [ i ] . vertices = malloc ( sizeof ( float ) * model . meshes [ i ] . vertexCount * 3 ) ; / / Default vertex positions
model . meshes [ i ] . normals = malloc ( sizeof ( float ) * model . meshes [ i ] . vertexCount * 3 ) ; / / Default vertex normals
model . meshes [ i ] . texcoords = malloc ( sizeof ( float ) * model . meshes [ i ] . vertexCount * 2 ) ; / / Default vertex texcoords
model . meshes [ i ] . vertices = RL_MALLOC ( sizeof ( float ) * model . meshes [ i ] . vertexCount * 3 ) ; / / Default vertex positions
model . meshes [ i ] . normals = RL_MALLOC ( sizeof ( float ) * model . meshes [ i ] . vertexCount * 3 ) ; / / Default vertex normals
model . meshes [ i ] . texcoords = RL_MALLOC ( sizeof ( float ) * model . meshes [ i ] . vertexCount * 2 ) ; / / Default vertex texcoords
model . meshes [ i ] . boneIds = malloc ( sizeof ( int ) * model . meshes [ i ] . vertexCount * 4 ) ; / / Up - to 4 bones supported !
model . meshes [ i ] . boneWeights = malloc ( sizeof ( float ) * model . meshes [ i ] . vertexCount * 4 ) ; / / Up - to 4 bones supported !
model . meshes [ i ] . boneIds = RL_MALLOC ( sizeof ( int ) * model . meshes [ i ] . vertexCount * 4 ) ; / / Up - to 4 bones supported !
model . meshes [ i ] . boneWeights = RL_MALLOC ( sizeof ( float ) * model . meshes [ i ] . vertexCount * 4 ) ; / / Up - to 4 bones supported !
model . meshes [ i ] . triangleCount = imesh [ i ] . num_triangles ;
model . meshes [ i ] . indices = malloc ( sizeof ( unsigned short ) * model . meshes [ i ] . triangleCount * 3 ) ;
model . meshes [ i ] . indices = RL_MALLOC ( sizeof ( unsigned short ) * model . meshes [ i ] . triangleCount * 3 ) ;
/ / Animated verted data , what we actually process for rendering
/ / NOTE : Animated vertex should be re - uploaded to GPU ( if not using GPU skinning )
model . meshes [ i ] . animVertices = malloc ( sizeof ( float ) * model . meshes [ i ] . vertexCount * 3 ) ;
model . meshes [ i ] . animNormals = malloc ( sizeof ( float ) * model . meshes [ i ] . vertexCount * 3 ) ;
model . meshes [ i ] . animVertices = RL_MALLOC ( sizeof ( float ) * model . meshes [ i ] . vertexCount * 3 ) ;
model . meshes [ i ] . animNormals = RL_MALLOC ( sizeof ( float ) * model . meshes [ i ] . vertexCount * 3 ) ;
}
/ / Triangles data processing
tri = malloc ( sizeof ( IQMTriangle ) * iqm . num_triangles ) ;
tri = RL_MALLOC ( sizeof ( IQMTriangle ) * iqm . num_triangles ) ;
fseek ( iqmFile , iqm . ofs_triangles , SEEK_SET ) ;
fread ( tri , sizeof ( IQMTriangle ) * iqm . num_triangles , 1 , iqmFile ) ;
@ -3079,7 +3080,7 @@ static Model LoadIQM(const char *fileName)
}
/ / Vertex arrays data processing
va = malloc ( sizeof ( IQMVertexArray ) * iqm . num_vertexarrays ) ;
va = RL_MALLOC ( sizeof ( IQMVertexArray ) * iqm . num_vertexarrays ) ;
fseek ( iqmFile , iqm . ofs_vertexarrays , SEEK_SET ) ;
fread ( va , sizeof ( IQMVertexArray ) * iqm . num_vertexarrays , 1 , iqmFile ) ;
@ -3089,7 +3090,7 @@ static Model LoadIQM(const char *fileName)
{
case IQM_POSITION :
{
vertex = malloc ( sizeof ( float ) * iqm . num_vertexes * 3 ) ;
vertex = RL_MALLOC ( sizeof ( float ) * iqm . num_vertexes * 3 ) ;
fseek ( iqmFile , va [ i ] . offset , SEEK_SET ) ;
fread ( vertex , sizeof ( float ) * iqm . num_vertexes * 3 , 1 , iqmFile ) ;
@ -3106,7 +3107,7 @@ static Model LoadIQM(const char *fileName)
} break ;
case IQM_NORMAL :
{
normal = malloc ( sizeof ( float ) * iqm . num_vertexes * 3 ) ;
normal = RL_MALLOC ( sizeof ( float ) * iqm . num_vertexes * 3 ) ;
fseek ( iqmFile , va [ i ] . offset , SEEK_SET ) ;
fread ( normal , sizeof ( float ) * iqm . num_vertexes * 3 , 1 , iqmFile ) ;
@ -3123,7 +3124,7 @@ static Model LoadIQM(const char *fileName)
} break ;
case IQM_TEXCOORD :
{
text = malloc ( sizeof ( float ) * iqm . num_vertexes * 2 ) ;
text = RL_MALLOC ( sizeof ( float ) * iqm . num_vertexes * 2 ) ;
fseek ( iqmFile , va [ i ] . offset , SEEK_SET ) ;
fread ( text , sizeof ( float ) * iqm . num_vertexes * 2 , 1 , iqmFile ) ;
@ -3139,7 +3140,7 @@ static Model LoadIQM(const char *fileName)
} break ;
case IQM_BLENDINDEXES :
{
blendi = malloc ( sizeof ( char ) * iqm . num_vertexes * 4 ) ;
blendi = RL_MALLOC ( sizeof ( char ) * iqm . num_vertexes * 4 ) ;
fseek ( iqmFile , va [ i ] . offset , SEEK_SET ) ;
fread ( blendi , sizeof ( char ) * iqm . num_vertexes * 4 , 1 , iqmFile ) ;
@ -3155,7 +3156,7 @@ static Model LoadIQM(const char *fileName)
} break ;
case IQM_BLENDWEIGHTS :
{
blendw = malloc ( sizeof ( unsigned char ) * iqm . num_vertexes * 4 ) ;
blendw = RL_MALLOC ( sizeof ( unsigned char ) * iqm . num_vertexes * 4 ) ;
fseek ( iqmFile , va [ i ] . offset , SEEK_SET ) ;
fread ( blendw , sizeof ( unsigned char ) * iqm . num_vertexes * 4 , 1 , iqmFile ) ;
@ -3173,13 +3174,13 @@ static Model LoadIQM(const char *fileName)
}
/ / Bones ( joints ) data processing
ijoint = malloc ( sizeof ( IQMJoint ) * iqm . num_joints ) ;
ijoint = RL_MALLOC ( sizeof ( IQMJoint ) * iqm . num_joints ) ;
fseek ( iqmFile , iqm . ofs_joints , SEEK_SET ) ;
fread ( ijoint , sizeof ( IQMJoint ) * iqm . num_joints , 1 , iqmFile ) ;
model . boneCount = iqm . num_joints ;
model . bones = malloc ( sizeof ( BoneInfo ) * iqm . num_joints ) ;
model . bindPose = malloc ( sizeof ( Transform ) * iqm . num_joints ) ;
model . bones = RL_MALLOC ( sizeof ( BoneInfo ) * iqm . num_joints ) ;
model . bindPose = RL_MALLOC ( sizeof ( Transform ) * iqm . num_joints ) ;
for ( int i = 0 ; i < iqm . num_joints ; i + + )
{
@ -3216,15 +3217,15 @@ static Model LoadIQM(const char *fileName)
}
fclose ( iqmFile ) ;
free ( imesh ) ;
free ( tri ) ;
free ( va ) ;
free ( vertex ) ;
free ( normal ) ;
free ( text ) ;
free ( blendi ) ;
free ( blendw ) ;
free ( ijoint ) ;
RL_FREE ( imesh ) ;
RL_FREE ( tri ) ;
RL_FREE ( va ) ;
RL_FREE ( vertex ) ;
RL_FREE ( normal ) ;
RL_FREE ( text ) ;
RL_FREE ( blendi ) ;
RL_FREE ( blendw ) ;
RL_FREE ( ijoint ) ;
return model ;
}
@ -3249,7 +3250,7 @@ static Model LoadGLTF(const char *fileName)
int size = ftell ( gltfFile ) ;
fseek ( gltfFile , 0 , SEEK_SET ) ;
void * buffer = malloc ( size ) ;
void * buffer = RL_MALLOC ( size ) ;
fread ( buffer , size , 1 , gltfFile ) ;
fclose ( gltfFile ) ;
@ -3259,7 +3260,7 @@ static Model LoadGLTF(const char *fileName)
cgltf_data * data ;
cgltf_result result = cgltf_parse ( & options , buffer , size , & data ) ;
free ( buffer ) ;
RL_FREE ( buffer ) ;
if ( result = = cgltf_result_success )
{
@ -3270,7 +3271,7 @@ static Model LoadGLTF(const char *fileName)
/ / Process glTF data and map to model
model . meshCount = data - > meshes_count ;
model . meshes = malloc ( model . meshCount * sizeof ( Mesh ) ) ;
model . meshes = RL_MALLOC ( model . meshCount * sizeof ( Mesh ) ) ;
for ( int i = 0 ; i < model . meshCount ; i + + )
{
@ -3282,11 +3283,11 @@ static Model LoadGLTF(const char *fileName)
model . meshes [ i ] . triangleCount = data - > meshes [ i ] . primitives_count ;
/ / data . meshes [ i ] . weights not used ( array of weights to be applied to the Morph Targets )
model . meshes [ i ] . vertices = malloc ( sizeof ( float ) * model . meshes [ i ] . vertexCount * 3 ) ; / / Default vertex positions
model . meshes [ i ] . normals = malloc ( sizeof ( float ) * model . meshes [ i ] . vertexCount * 3 ) ; / / Default vertex normals
model . meshes [ i ] . texcoords = malloc ( sizeof ( float ) * model . meshes [ i ] . vertexCount * 2 ) ; / / Default vertex texcoords
model . meshes [ i ] . vertices = RL_MALLOC ( sizeof ( float ) * model . meshes [ i ] . vertexCount * 3 ) ; / / Default vertex positions
model . meshes [ i ] . normals = RL_MALLOC ( sizeof ( float ) * model . meshes [ i ] . vertexCount * 3 ) ; / / Default vertex normals
model . meshes [ i ] . texcoords = RL_MALLOC ( sizeof ( float ) * model . meshes [ i ] . vertexCount * 2 ) ; / / Default vertex texcoords
model . meshes [ i ] . indices = malloc ( sizeof ( unsigned short ) * model . meshes [ i ] . triangleCount * 3 ) ;
model . meshes [ i ] . indices = RL_MALLOC ( sizeof ( unsigned short ) * model . meshes [ i ] . triangleCount * 3 ) ;
}
}