Пример #1
0
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);
    }
}
Пример #2
0
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();
}
Пример #3
0
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;
}