|
|
@ -782,16 +782,50 @@ Model LoadModelFromMesh(Mesh mesh) |
|
|
|
return model; |
|
|
|
} |
|
|
|
|
|
|
|
// Unload model from memory (RAM and/or VRAM) |
|
|
|
// Unload model (meshes/materials) from memory (RAM and/or VRAM) |
|
|
|
// NOTE: This function takes care of all model elements, for a detailed control |
|
|
|
// over them, use UnloadMesh() and UnloadMaterial() |
|
|
|
void UnloadModel(Model model) |
|
|
|
{ |
|
|
|
// Unload meshes |
|
|
|
for (int i = 0; i < model.meshCount; i++) UnloadMesh(model.meshes[i]); |
|
|
|
|
|
|
|
// As the user could be sharing shaders and textures between models, |
|
|
|
// we don't unload the material but just free it's maps, the user |
|
|
|
// is responsible for freeing models shaders and textures |
|
|
|
for (int i = 0; i < model.materialCount; i++) RL_FREE(model.materials[i].maps); |
|
|
|
// Unload materials maps and params |
|
|
|
// NOTE: As the user could be sharing shaders and textures between models, |
|
|
|
// we don't unload the material but just free it's maps and params, |
|
|
|
// the user is responsible for freeing models shaders and textures |
|
|
|
for (int i = 0; i < model.materialCount; i++) |
|
|
|
{ |
|
|
|
RL_FREE(model.materials[i].maps); |
|
|
|
RL_FREE(model.materials[i].params); |
|
|
|
} |
|
|
|
|
|
|
|
// Unload arrays |
|
|
|
RL_FREE(model.meshes); |
|
|
|
RL_FREE(model.materials); |
|
|
|
RL_FREE(model.meshMaterial); |
|
|
|
|
|
|
|
// Unload animation data |
|
|
|
RL_FREE(model.bones); |
|
|
|
RL_FREE(model.bindPose); |
|
|
|
|
|
|
|
TRACELOG(LOG_INFO, "MODEL: Unloaded model (and meshes) from RAM and VRAM"); |
|
|
|
} |
|
|
|
|
|
|
|
// Unload model (but not meshes) from memory (RAM and/or VRAM) |
|
|
|
void UnloadModelKeepMeshes(Model model) |
|
|
|
{ |
|
|
|
// Unload materials maps and params |
|
|
|
// NOTE: As the user could be sharing shaders and textures between models, |
|
|
|
// we don't unload the material but just free it's maps and params, |
|
|
|
// the user is responsible for freeing models shaders and textures |
|
|
|
for (int i = 0; i < model.materialCount; i++) |
|
|
|
{ |
|
|
|
RL_FREE(model.materials[i].maps); |
|
|
|
RL_FREE(model.materials[i].params); |
|
|
|
} |
|
|
|
|
|
|
|
// Unload arrays |
|
|
|
RL_FREE(model.meshes); |
|
|
|
RL_FREE(model.materials); |
|
|
|
RL_FREE(model.meshMaterial); |
|
|
@ -800,7 +834,7 @@ void UnloadModel(Model model) |
|
|
|
RL_FREE(model.bones); |
|
|
|
RL_FREE(model.bindPose); |
|
|
|
|
|
|
|
TRACELOG(LOG_INFO, "MODEL: Unloaded model from RAM and VRAM"); |
|
|
|
TRACELOG(LOG_INFO, "MODEL: Unloaded model (but not meshes) from RAM and VRAM"); |
|
|
|
} |
|
|
|
|
|
|
|
// Load meshes from model file |
|
|
@ -950,6 +984,7 @@ void UnloadMaterial(Material material) |
|
|
|
} |
|
|
|
|
|
|
|
RL_FREE(material.maps); |
|
|
|
RL_FREE(material.params); |
|
|
|
} |
|
|
|
|
|
|
|
// Set texture for a material map type (MAP_DIFFUSE, MAP_SPECULAR...) |
|
|
|