|
@@ -558,22 +558,33 @@ void DrawGizmo(Vector3 position)
|
|
Model LoadModel(const char *fileName)
|
|
Model LoadModel(const char *fileName)
|
|
{
|
|
{
|
|
VertexData vData;
|
|
VertexData vData;
|
|
|
|
+
|
|
|
|
+ Model model;
|
|
|
|
+
|
|
|
|
+ // TODO: Initialize default data for model in case loading fails, maybe a cube?
|
|
|
|
|
|
if (strcmp(GetExtension(fileName),"obj") == 0) vData = LoadOBJ(fileName);
|
|
if (strcmp(GetExtension(fileName),"obj") == 0) vData = LoadOBJ(fileName);
|
|
else TraceLog(WARNING, "[%s] Model extension not recognized, it can't be loaded", fileName);
|
|
else TraceLog(WARNING, "[%s] Model extension not recognized, it can't be loaded", fileName);
|
|
|
|
|
|
// NOTE: At this point we have all vertex, texcoord, normal data for the model in vData struct
|
|
// NOTE: At this point we have all vertex, texcoord, normal data for the model in vData struct
|
|
-
|
|
|
|
- // NOTE: model properties (transform, texture, shader) are initialized inside rlglLoadModel()
|
|
|
|
- Model model = rlglLoadModel(vData); // Upload vertex data to GPU
|
|
|
|
-
|
|
|
|
- // Now that vertex data is uploaded to GPU, we can free arrays
|
|
|
|
- // NOTE: We don't need CPU vertex data on OpenGL 3.3 or ES2
|
|
|
|
- if (rlGetVersion() != OPENGL_11)
|
|
|
|
|
|
+
|
|
|
|
+ if (vData.vertexCount == 0)
|
|
{
|
|
{
|
|
- free(vData.vertices);
|
|
|
|
- free(vData.texcoords);
|
|
|
|
- free(vData.normals);
|
|
|
|
|
|
+ TraceLog(WARNING, "Model could not be loaded");
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ // NOTE: model properties (transform, texture, shader) are initialized inside rlglLoadModel()
|
|
|
|
+ model = rlglLoadModel(vData); // Upload vertex data to GPU
|
|
|
|
+
|
|
|
|
+ // Now that vertex data is uploaded to GPU, we can free arrays
|
|
|
|
+ // NOTE: We don't need CPU vertex data on OpenGL 3.3 or ES2
|
|
|
|
+ if (rlGetVersion() != OPENGL_11)
|
|
|
|
+ {
|
|
|
|
+ free(vData.vertices);
|
|
|
|
+ free(vData.texcoords);
|
|
|
|
+ free(vData.normals);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
return model;
|
|
return model;
|