diff options
| author | Ray <[email protected]> | 2021-03-18 13:57:53 +0100 |
|---|---|---|
| committer | Ray <[email protected]> | 2021-03-18 13:57:53 +0100 |
| commit | 664fbb87f5a88523fc76d835fe88528abfe46405 (patch) | |
| tree | 0171c0cae4c3feceeb34cf104452f91459956ac8 | |
| parent | ca1f2f9078f1af37f49e03c76f08930816561934 (diff) | |
| download | raylib-664fbb87f5a88523fc76d835fe88528abfe46405.tar.gz raylib-664fbb87f5a88523fc76d835fe88528abfe46405.zip | |
REVIEWED: Material params #1649
Just assigned a fixed memory size for custom Material parameters in case of being required, so we shouldn't worry about allocating/freeing them.
| -rw-r--r-- | src/models.c | 21 | ||||
| -rw-r--r-- | src/raylib.h | 2 | ||||
| -rw-r--r-- | src/rlgl.h | 2 |
3 files changed, 8 insertions, 17 deletions
diff --git a/src/models.c b/src/models.c index 729cc2a2..7c45afd2 100644 --- a/src/models.c +++ b/src/models.c @@ -797,15 +797,11 @@ void UnloadModel(Model model) // Unload meshes for (int i = 0; i < model.meshCount; i++) UnloadMesh(model.meshes[i]); - // Unload materials maps and params + // Unload materials maps // 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, + // 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); - RL_FREE(model.materials[i].params); - } + for (int i = 0; i < model.materialCount; i++) RL_FREE(model.materials[i].maps); // Unload arrays RL_FREE(model.meshes); @@ -822,15 +818,11 @@ void UnloadModel(Model model) // Unload model (but not meshes) from memory (RAM and/or VRAM) void UnloadModelKeepMeshes(Model model) { - // Unload materials maps and params + // Unload materials maps // 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, + // 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); - RL_FREE(model.materials[i].params); - } + for (int i = 0; i < model.materialCount; i++) RL_FREE(model.materials[i].maps); // Unload arrays RL_FREE(model.meshes); @@ -1013,7 +1005,6 @@ void UnloadMaterial(Material material) } RL_FREE(material.maps); - RL_FREE(material.params); } // Set texture for a material map type (MATERIAL_MAP_DIFFUSE, MATERIAL_MAP_SPECULAR...) diff --git a/src/raylib.h b/src/raylib.h index 676b07f5..be071416 100644 --- a/src/raylib.h +++ b/src/raylib.h @@ -349,7 +349,7 @@ typedef struct MaterialMap { typedef struct Material { Shader shader; // Material shader MaterialMap *maps; // Material maps array (MAX_MATERIAL_MAPS) - float *params; // Material generic parameters (if required) + float params[4]; // Material generic parameters (if required) } Material; // Transformation properties @@ -316,7 +316,7 @@ typedef enum { typedef struct Material { Shader shader; // Material shader MaterialMap *maps; // Material maps (MAX_MATERIAL_MAPS) - float *params; // Material generic parameters (if required) + float params[4]; // Material generic parameters (if required) } Material; // Camera type, defines a camera position/orientation in 3d space |
