diff options
Diffstat (limited to 'obj.c')
-rw-r--r-- | obj.c | 32 |
1 files changed, 23 insertions, 9 deletions
@@ -55,17 +55,22 @@ ObjModel* ObjLoadModel(char *memory, size_t size) &ret->VertexArray[nV].z); nV++; } + /* quad */ else if (memcmp(p, "f", 1) == 0) /* or *p == 'f' */ { - sscanf(p, "f %d/%d/%d %d/%d/%d %d/%d/%d", &ret->FaceArray[nF].Vertex[0], - &ret->FaceArray[nF].TexCoord[0], - &ret->FaceArray[nF].Normal[0], - &ret->FaceArray[nF].Vertex[1], - &ret->FaceArray[nF].TexCoord[1], - &ret->FaceArray[nF].Normal[1], - &ret->FaceArray[nF].Vertex[2], - &ret->FaceArray[nF].TexCoord[2], - &ret->FaceArray[nF].Normal[2]); + sscanf(p, "f %d/%d/%d %d/%d/%d %d/%d/%d %d/%d/%d", + &ret->FaceArray[nF].Vertex[0], + &ret->FaceArray[nF].TexCoord[0], + &ret->FaceArray[nF].Normal[0], + &ret->FaceArray[nF].Vertex[1], + &ret->FaceArray[nF].TexCoord[1], + &ret->FaceArray[nF].Normal[1], + &ret->FaceArray[nF].Vertex[2], + &ret->FaceArray[nF].TexCoord[2], + &ret->FaceArray[nF].Normal[2], + &ret->FaceArray[nF].Vertex[3], + &ret->FaceArray[nF].TexCoord[3], + &ret->FaceArray[nF].Normal[3]); nF++; } /* seek to a newline */ @@ -109,3 +114,12 @@ size_t ObjLoadFile(char *szFileName, char **memory) return bytes; } +void ObjFree(ObjModel *model) +{ + free(model->NormalArray); + free(model->TexCoordArray); + free(model->FaceArray); + free(model->VertexArray); + free(model); +} + |