summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorUneven Prankster <[email protected]>2023-01-30 13:00:39 -0300
committerGitHub <[email protected]>2023-01-30 17:00:39 +0100
commit929a46cbab648955ddad1a04d1ed848c488fc9d4 (patch)
tree3e696e527a4dfce51a7770444c65018dfe2cba86 /src
parentdf5a736c009d98187e703a55c604345e12777bb7 (diff)
downloadraylib-929a46cbab648955ddad1a04d1ed848c488fc9d4.tar.gz
raylib-929a46cbab648955ddad1a04d1ed848c488fc9d4.zip
[models] Fix M3D vertex color import. (#2878)
* Fix vertex color import for .m3d * Only load vertex colors when color map and/or materials are present * Only execute when color array is present --------- Co-authored-by: Uneven Prankster <[email protected]>
Diffstat (limited to 'src')
-rw-r--r--src/rmodels.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/src/rmodels.c b/src/rmodels.c
index 15de05c0..af61b8e5 100644
--- a/src/rmodels.c
+++ b/src/rmodels.c
@@ -5633,11 +5633,9 @@ static Model LoadM3D(const char *fileName)
model.meshes[k].texcoords = (float *)RL_CALLOC(model.meshes[k].vertexCount*2, sizeof(float));
model.meshes[k].normals = (float *)RL_CALLOC(model.meshes[k].vertexCount*3, sizeof(float));
- // without material, we rely on vertex colors
- if (mi == M3D_UNDEF && model.meshes[k].colors == NULL)
+ if(m3d->cmap != NULL || mi != M3D_UNDEF)
{
model.meshes[k].colors = RL_CALLOC(model.meshes[k].vertexCount*4, sizeof(unsigned char));
- for (j = 0; j < model.meshes[k].vertexCount*4; j += 4) memcpy(&model.meshes[k].colors[j], &WHITE, 4);
}
if (m3d->numbone && m3d->numskin)
@@ -5662,10 +5660,10 @@ static Model LoadM3D(const char *fileName)
model.meshes[k].vertices[l * 9 + 6] = m3d->vertex[m3d->face[i].vertex[2]].x*m3d->scale;
model.meshes[k].vertices[l * 9 + 7] = m3d->vertex[m3d->face[i].vertex[2]].y*m3d->scale;
model.meshes[k].vertices[l * 9 + 8] = m3d->vertex[m3d->face[i].vertex[2]].z*m3d->scale;
-
- if (mi == M3D_UNDEF)
+
+ // without vertex color (full transparency), we use the default color
+ if(model.meshes[k].colors != NULL)
{
- // without vertex color (full transparency), we use the default color
if (m3d->vertex[m3d->face[i].vertex[0]].color & 0xFF000000)
memcpy(&model.meshes[k].colors[l * 12 + 0], &m3d->vertex[m3d->face[i].vertex[0]].color, 4);
if (m3d->vertex[m3d->face[i].vertex[1]].color & 0xFF000000)