Code:
bool MS3D::Load(char* filename)
{
FILE* file;
MS3D_HEADER header;
int loop;
if((file= fopen(filename, "rb"))==NULL)
{
// error message goes here
return false;
}
fread(&header.id, sizeof(char), 10, file);
fread(&header.version, 1, sizeof(int), file);
if(strncmp(header.id, "MS3D000000", 10)!=0)
{
// error message goes here
return false;
}
if(header.version!=3 && header.version!=4)
{
// error message goes here
return false;
}
fread(&numVertices, sizeof(unsigned short), 1, file);
vertices= new MS3D_VERTEX [numVertices];
for(loop=0; loop<numVertices; loop++)
{
fread(&vertices[loop].flags, sizeof(BYTE), 1, file);
fread( vertices[loop].vertex, sizeof(float), 3, file);
fread(&vertices[loop].boneID, sizeof(char), 1, file);
fread(&vertices[loop].refCount, sizeof(BYTE), 1, file);
}
fread(&numTriangles, sizeof(unsigned short), 1, file);
triangles= new MS3D_TRIANGLE [numTriangles];
for(loop=0; loop<numTriangles; loop++)
{
fread(&triangles[loop].flags, sizeof(unsigned short), 1, file);
fread( triangles[loop].vertexIndices, sizeof(unsigned short), 3, file);
fread( triangles[loop].vertexNormals[0],sizeof(float), 3, file);
fread( triangles[loop].vertexNormals[1],sizeof(float), 3, file);
fread( triangles[loop].vertexNormals[2],sizeof(float), 3, file);
fread( triangles[loop].u, sizeof(float), 3, file);
fread( triangles[loop].v, sizeof(float), 3, file);
fread(&triangles[loop].smoothingGroup, sizeof(unsigned char), 1, file);
fread(&triangles[loop].groupIndex, sizeof(unsigned char), 1, file);
}
fread(&numGroups, sizeof(unsigned short), 1, file);
groups= new MS3D_GROUP [numGroups];
for(loop=0; loop<numGroups; loop++)
{
fread(&groups[loop].flags, sizeof(unsigned char), 1, file);
fread( groups[loop].name, sizeof(char), 32, file);
fread(&groups[loop].numTriangles,sizeof(unsigned short),1, file);
groups[loop].triangleIndices=new unsigned short [groups[loop].numTriangles];
fread( groups[loop].triangleIndices, sizeof(unsigned short), groups[loop].numTriangles,file);
fread(&groups[loop].materialIndex, sizeof(char), 1, file);
}
fread(&mNumMaterials, sizeof(unsigned short), 1, file);
mpMaterials= new MS3D_MATERIAL [mNumMaterials];
for(loop=0; loop<mNumMaterials; loop++)
{
fread( mpMaterials[loop].mAmbient, sizeof(float), 4, file);
fread( mpMaterials[loop].mDiffuse, sizeof(float), 4, file);
fread( mpMaterials[loop].mSpecular, sizeof(float), 4, file);
fread( mpMaterials[loop].mEmissive, sizeof(float), 4, file);
fread(&mpMaterials[loop].mTexture, sizeof(GLuint), 1, file);
fread( mpMaterials[loop].mTexFilename, sizeof(char), 30, file);
fread(&mpMaterials[loop].mShininess, sizeof(float), 1, file);
}
// error message goes here
return true;
}
if loads without crashing, and I can tell how many textures there are, but i can't tell the file name or anything else that's actually in the structures.........i just pretty much copy/pasted the structure you used for the textures: