summaryrefslogtreecommitdiffhomepage
path: root/src/models.c
diff options
context:
space:
mode:
authorraysan5 <[email protected]>2020-05-18 18:35:47 +0200
committerraysan5 <[email protected]>2020-05-18 18:35:47 +0200
commitb3eea3d322df136b8b53019c4258893a56f3d395 (patch)
tree61e6a59bf9bed358e4c3af72f64872b73c00e710 /src/models.c
parent6acb7bcfe4451e1d1c7121a1c3c508b5faa7981d (diff)
downloadraylib-b3eea3d322df136b8b53019c4258893a56f3d395.tar.gz
raylib-b3eea3d322df136b8b53019c4258893a56f3d395.zip
Avoid loading texcoords and normasl from model if not existent
Diffstat (limited to 'src/models.c')
-rw-r--r--src/models.c32
1 files changed, 19 insertions, 13 deletions
diff --git a/src/models.c b/src/models.c
index 7e88d790..0cce4f2c 100644
--- a/src/models.c
+++ b/src/models.c
@@ -2942,19 +2942,25 @@ static Model LoadOBJ(const char *fileName)
for (int v = 0; v < 3; v++) { mesh.vertices[vCount + v] = attrib.vertices[idx1.v_idx*3 + v]; } vCount +=3;
for (int v = 0; v < 3; v++) { mesh.vertices[vCount + v] = attrib.vertices[idx2.v_idx*3 + v]; } vCount +=3;
- // Fill texcoords buffer (float) using vertex index of the face
- // NOTE: Y-coordinate must be flipped upside-down
- mesh.texcoords[vtCount + 0] = attrib.texcoords[idx0.vt_idx*2 + 0];
- mesh.texcoords[vtCount + 1] = 1.0f - attrib.texcoords[idx0.vt_idx*2 + 1]; vtCount += 2;
- mesh.texcoords[vtCount + 0] = attrib.texcoords[idx1.vt_idx*2 + 0];
- mesh.texcoords[vtCount + 1] = 1.0f - attrib.texcoords[idx1.vt_idx*2 + 1]; vtCount += 2;
- mesh.texcoords[vtCount + 0] = attrib.texcoords[idx2.vt_idx*2 + 0];
- mesh.texcoords[vtCount + 1] = 1.0f - attrib.texcoords[idx2.vt_idx*2 + 1]; vtCount += 2;
-
- // Fill normals buffer (float) using vertex index of the face
- for (int v = 0; v < 3; v++) { mesh.normals[vnCount + v] = attrib.normals[idx0.vn_idx*3 + v]; } vnCount +=3;
- for (int v = 0; v < 3; v++) { mesh.normals[vnCount + v] = attrib.normals[idx1.vn_idx*3 + v]; } vnCount +=3;
- for (int v = 0; v < 3; v++) { mesh.normals[vnCount + v] = attrib.normals[idx2.vn_idx*3 + v]; } vnCount +=3;
+ if (attrib.num_texcoords > 0)
+ {
+ // Fill texcoords buffer (float) using vertex index of the face
+ // NOTE: Y-coordinate must be flipped upside-down
+ mesh.texcoords[vtCount + 0] = attrib.texcoords[idx0.vt_idx*2 + 0];
+ mesh.texcoords[vtCount + 1] = 1.0f - attrib.texcoords[idx0.vt_idx*2 + 1]; vtCount += 2;
+ mesh.texcoords[vtCount + 0] = attrib.texcoords[idx1.vt_idx*2 + 0];
+ mesh.texcoords[vtCount + 1] = 1.0f - attrib.texcoords[idx1.vt_idx*2 + 1]; vtCount += 2;
+ mesh.texcoords[vtCount + 0] = attrib.texcoords[idx2.vt_idx*2 + 0];
+ mesh.texcoords[vtCount + 1] = 1.0f - attrib.texcoords[idx2.vt_idx*2 + 1]; vtCount += 2;
+ }
+
+ if (attrib.num_normals > 0)
+ {
+ // Fill normals buffer (float) using vertex index of the face
+ for (int v = 0; v < 3; v++) { mesh.normals[vnCount + v] = attrib.normals[idx0.vn_idx*3 + v]; } vnCount +=3;
+ for (int v = 0; v < 3; v++) { mesh.normals[vnCount + v] = attrib.normals[idx1.vn_idx*3 + v]; } vnCount +=3;
+ for (int v = 0; v < 3; v++) { mesh.normals[vnCount + v] = attrib.normals[idx2.vn_idx*3 + v]; } vnCount +=3;
+ }
}
model.meshes[m] = mesh; // Assign mesh data to model