void ModelLoader::DispatchRead(FILE* apFile) { char tBuffer[BUFFER_SIZE]; fscanf(apFile,"%s",tBuffer); if(!strcmp("v",tBuffer)) { ReadVertexData(apFile); } else if(!strcmp("vt",tBuffer)) { ReadTextureData(apFile); } else if(!strcmp("vn",tBuffer)) { ReadNormalData(apFile); } else if(!strcmp("f",tBuffer)) { ReadSurfaceData(apFile); } else { fgets(tBuffer,BUFFER_SIZE,apFile); } }
Mesh::Mesh(Program &program, const char *filename) : Drawable(program) , vbuffer(-1) , nbuffer(-1) , tbuffer(-1) , fbuffer(-1) , texture(NULL) { FILE *fp = fopen(filename, "r"); if(!fp) { std::cout << "Could not open file: " << filename << " :" << strerror(errno) << std::endl; exit(-1); } int num_vertices, num_faces; bool have_normals = false; bool have_tex = false; //Read the header ReadHeader(fp, num_vertices, num_faces, have_normals, have_tex); ReadVertexData(fp, num_vertices, have_normals, have_tex); ReadFaceData(fp, num_faces); InitBuffers(); }
static bool LoadMesh5013(MZFile& file, EluMesh &mesh) { V(ReadName(file, mesh)); V(file.Seek(4)); V(SkipVector<char>(file)); V(ReadWorld(file, mesh)); V(file.Seek(16)); VertexData vertexData; V(ReadVertexData(file, mesh, vertexData, { Pos, Tex, SkipVecV3, Nor, Tan, SkipVecV3 })); V(ReadIndices(file)); V(ReadBisomething(file)); std::vector<std::array<u16, 6>> subindices; V(ReadSubindices(file, subindices)); V(LoadSubmeshData(file, mesh)); V(ReadMeshData(file, mesh, subindices, vertexData)); V(file.Seek(2 * sizeof(v3))); return true; }