ok ok i give ill post my code just to help you help me out. just be forwarned it can be pretty nasty...
/*struct LAYER{ string Name, Class, Location, Filter; int Subno, Noise_level; float Amount, Angle, Blur, Blur_offset, Noise_amt, Noise_size, Noise_phase; POINT Offset, Tiling;};*/struct MATERIAL{ char Mat_name[sizeof(int)]; char Mat_file[sizeof(int)]; Vector3 rgb_Ambient; Vector3 rgb_Diffuse; Vector3 rgb_Specular; float Transparency;};struct MESH{ int num_vertex, //number of vertices num_faces, //number of faces num_t_vertex, //number of textured vertices num_t_face, //number of textured faces mat_id; //texture ID vector<Vector3> vertex; //holds xyz values for vertices vector<Face> face; //holds 3 floats for triangle vertices vector<Vector3> fnormal; //holds 3 floats for face normals vector<Vector3> vnormal; //holds 3 floats for vertex normals vector<Vector3> tvertex; //holds 3 floats for textured vertices vector<Face> tface; //holds 3 integers for textured faces (index value)};/////////////////STREAM VARIABLES/////////////////string S_stream;char stream[sizeof(int)];////////////////////////////////////////////////////////////////////FILE VARIABLES//////////////////FILE *infile;ofstream outfile;///////////////////////////////////////////////////////////////////GLOBAL VARIABLES/////////////////static GLuint map = NULL;int num_obj = 0;int num_mat = 0;vector<MESH> Mesh_array;vector<MATERIAL> Mat_array;//////////////////////////////////////////////////////////////////FUNCTION PROTOTYPES///////////////GLuint Import(char *fname, GLuint map);void Import_Obj();void Import_Mat();GLuint Draw_Triangles();//////////////////////////////////////////////////GLuint Draw_Triangles(){ outfile << "DRAW_TRIANGLES()" << endl; double v1, v2, v3; float v_n1, v_n2, v_n3; //float f_n1, f_n2, f_n3; float tex_x, tex_y; int index = 0; int normal_ind = 0; int tex_ind = 0; map = glGenLists(1); glNewList(map, GL_COMPILE); for(int loop1=0; loop1<num_obj; loop1++) { outfile << "Loop1#" << loop1 << endl; glBindTexture(GL_TEXTURE_2D, texture[loop1]); glColor4f(1, 1, 1, 1); for(int loop2=0; loop2<Mesh_array[loop1].num_faces; loop2++) { outfile << "Loop2#" << loop2 << endl; glBegin(GL_TRIANGLE_STRIP); outfile << "Begin Triangles" << endl; v1 = v2 = v3 = 0; outfile << "Init v1, v2, v3" << endl; index = 0; outfile << "Init index" << endl; v_n1 = v_n2 = v_n3 = 0; outfile << "Init f_n1, f_n2, f_n3" << endl; tex_x = tex_y = 0; outfile << "Init tex_x, tex_y" << endl; index = Mesh_array[loop1].face[loop2].x; outfile << "ind " << index << endl; tex_ind = Mesh_array[loop1].tface[loop2].x; tex_x = Mesh_array[loop1].tvertex[loop2].x; tex_y = Mesh_array[loop1].tvertex[loop2].y; v_n1 = Mesh_array[loop1].vnormal[index].x; outfile << "v_n1 " << v_n1 << endl; v_n2 = Mesh_array[loop1].vnormal[index].y; outfile << "v_n2 " << v_n2 << endl; v_n3 = Mesh_array[loop1].vnormal[index].z; outfile << "v_n3 " << v_n3 << endl; v1 = Mesh_array[loop1].vertex[index].x; outfile << "v1 " << v1 << endl; v2 = Mesh_array[loop1].vertex[index].y; outfile << "v2 " << v2 << endl; v3 = Mesh_array[loop1].vertex[index].z; outfile << "v3 " << v3 << endl; glTexCoord2f(tex_x, tex_y); glNormal3f(v_n1, v_n2, v_n3); outfile << " Normal" << endl; glVertex3f(v1, v2, v3); outfile << " Vertex" << endl; index = Mesh_array[loop1].face[loop2].y; outfile << "ind " << index << endl; tex_ind = Mesh_array[loop1].tface[loop2].y; tex_x = Mesh_array[loop1].tvertex[loop2].x; tex_y = Mesh_array[loop1].tvertex[loop2].y; v_n1 = Mesh_array[loop1].vnormal[index].x; outfile << "v_n1 " << v_n1 << endl; v_n2 = Mesh_array[loop1].vnormal[index].y; outfile << "v_n2 " << v_n2 << endl; v_n3 = Mesh_array[loop1].vnormal[index].z; outfile << "v_n3 " << v_n3 << endl; v1 = Mesh_array[loop1].vertex[index].x; outfile << "v1 " << v1 << endl; v2 = Mesh_array[loop1].vertex[index].y; outfile << "v2 " << v2 << endl; v3 = Mesh_array[loop1].vertex[index].z; outfile << "v3 " << v3 << endl; glTexCoord2f(tex_x, tex_y); glNormal3f(v_n1, v_n2, v_n3); outfile << " Normal" << endl; glVertex3f(v1, v2, v3); outfile << " Vertex" << endl; index = Mesh_array[loop1].face[loop2].z; outfile << "ind " << index << endl; tex_ind = Mesh_array[loop1].tface[loop2].z; tex_x = Mesh_array[loop1].tvertex[loop2].x; tex_y = Mesh_array[loop1].tvertex[loop2].y; v_n1 = Mesh_array[loop1].vnormal[index].x; outfile << "v_n1 " << v_n1 << endl; v_n2 = Mesh_array[loop1].vnormal[index].y; outfile << "v_n2 " << v_n2 << endl; v_n3 = Mesh_array[loop1].vnormal[index].z; outfile << "v_n3 " << v_n3 << endl; v1 = Mesh_array[loop1].vertex[index].x; outfile << "v1 " << v1 << endl; v2 = Mesh_array[loop1].vertex[index].y; outfile << "v2 " << v2 << endl; v3 = Mesh_array[loop1].vertex[index].z; outfile << "v3 " << v3 << endl; glTexCoord2f(tex_x, tex_y); glNormal3f(v_n1, v_n2, v_n3); outfile << " Normal" << endl; glVertex3f(v1, v2, v3); outfile << " Vertex" << endl; glEnd(); } } glEndList(); outfile.close(); return map;}void Import_Mat(){ fseek(infile, 0L, SEEK_SET); while(!feof(infile)) { fscanf(infile, "%s", &stream); S_stream = stream; if(S_stream == "*MATERIAL") { num_mat++; Mat_array.reserve(256); Mat_array.resize(num_mat); //outfile << "*MATERIAL" << endl; } if(S_stream == "*BITMAP") { fscanf(infile, "%s", &stream); Mat_array[num_mat].Mat_file = stream; } } texture.resize(num_mat); for(int i=0; i<num_mat; i++) { BuildTexture(Mat_array[i].Mat_file, texture[i]); }}void Import_Obj(){ fseek(infile, 0L, SEEK_SET); //Sets file pointer to beginning while(!feof(infile)) //Checks to see if the eof has been reached { fscanf(infile, "%s", &stream); //Scans the next string to compare S_stream = stream; //Converts 'string' to char string' if(S_stream == "*GEOMOBJECT") //Changes to new storage vector for next object { num_obj++; //Increases global number of objects Mesh_array.reserve(256); //Reserves space for 256 objects Mesh_array.resize(num_obj); //Resizes global storage vector to hold next object //outfile << "*GEOMOBJECT" << endl; //Logging Output } if(S_stream == "*MATERIAL_REF") //Imports material ID { fscanf(infile, "%i", &Mesh_array[num_obj-1].mat_id); //Converts value to int //outfile << "*MATERIAL_REF" << endl; //Logging Output } if(S_stream == "*MESH_NUMTVERTEX") //Imports number of textured vertices { fscanf(infile, "%i", &Mesh_array[num_obj-1].num_t_vertex); //Converts value to int //outfile << "NUM tVERTEX" << endl; //Logging Output } if(S_stream == "*MESH_NUMTVFACES") //Imports number of terxtured faces { fscanf(infile, "%i", &Mesh_array[num_obj-1].num_t_face); //Converts value to int //outfile << "NUM tFACE" << endl; //Logging Output } if(S_stream == "*MESH_TVERTLIST") //Imports list of textured vertices { fscanf(infile, "%s", &stream); //Imports bracket for(int i=0; i<Mesh_array[num_obj-1].num_t_vertex; i++) //Loops for number of textured vertices { fscanf(infile, "%s", &stream); //Imports "*MESH_TVERT" fscanf(infile, "%s", &stream); //Imports index value fscanf(infile, "%f", &Mesh_array[num_obj-1].tvertex[i].x); //Converts to float fscanf(infile, "%f", &Mesh_array[num_obj-1].tvertex[i].z); //Swap Y and Z values for 3D Studio fscanf(infile, "%f", &Mesh_array[num_obj-1].tvertex[i].y); // "" } } if(S_stream == "*MESH_TFACELIST") //Imports list of textured faces { fscanf(infile, "%s", stream); //Imports brackets for(int i=0; i<Mesh_array[num_obj-1].num_t_face; i++) //Loops for number of textured faces { fscanf(infile, "%s", &stream); //Imports "*MESH_TFACE" fscanf(infile, "%s", &stream); //Imports index value fscanf(infile, "%f", &Mesh_array[num_obj-1].tface[i].x); //Converts to float fscanf(infile, "%f", &Mesh_array[num_obj-1].tface[i].z); //Swap Y and Z values for 3D Studio fscanf(infile, "%f", &Mesh_array[num_obj-1].tface[i].y); // "" } } if(S_stream == "*MESH_NUMVERTEX") //Imports number of vertices { fscanf(infile, "%i", &Mesh_array[num_obj-1].num_vertex); //Converts value to int Mesh_array[num_obj-1].vertex.resize(Mesh_array[num_obj-1].num_vertex); //Adjusts size of vertex storage vector Mesh_array[num_obj-1].vnormal.resize(Mesh_array[num_obj-1].num_vertex); //Adjusts size of vertex normal storage vector //outfile << "NUM mVERTEX" << endl; //Logging Output } if(S_stream == "*MESH_NUMFACES") //Imports number of faces { fscanf(infile, "%i", &Mesh_array[num_obj-1].num_faces); //Converts value to int Mesh_array[num_obj-1].face.resize(Mesh_array[num_obj-1].num_faces); //Adjusts size of the face storage vector Mesh_array[num_obj-1].fnormal.resize(Mesh_array[num_obj-1].num_faces); //Adjusts size of the face normal storage vector //outfile << "NUM FACES" << endl; //Logging Output } if(S_stream == "*MESH_VERTEX_LIST") //Imports list of vertices { fscanf(infile, "%s", &stream); //Inputs bracket //outfile << "VERTEX LIST:" << endl; //Logging Output for(int i=0; i<Mesh_array[num_obj-1].num_vertex; i++) //Loop through { fscanf(infile, "%s", &stream); //Inputs "*MESH_VERTEX" fscanf(infile, "%s", &stream); //Inputs vertex index //Y and Z values are swapped for 3D Studio files fscanf(infile, "%f", &Mesh_array[num_obj-1].vertex[i].x); //Converts x value & stores it fscanf(infile, "%f", &Mesh_array[num_obj-1].vertex[i].z); //Converts z value & stores it fscanf(infile, "%f", &Mesh_array[num_obj-1].vertex[i].y); //Converts y value & stores it //outfile << Mesh_array[num_obj-1].vertex.x << " "; //Logging Output <br></font><br> <font color=gray>//outfile << Mesh_array[num_obj-1].vertex.y << " "; //Logging Output<br></font><br> <font color=gray>//outfile << Mesh_array[num_obj-1].vertex.z << endl; //Logging Output<br></font><br> }<br> <font color=gray>//outfile << endl;<br></font><br> }<br> <br> if(S_stream == "</font>*MESH_FACE_LIST") <font color=gray>//Imports vertex indecies<br></font><br> {<br> fscanf(infile, <font color=darkred><font color=darkred><font color=darkred><font color=darkred><font color=darkred><font color=darkred>"%s"</font></font></font></font></font></font>, &stream); <font color=gray>//Skips a bracket<br></font><br> <font color=gray>//outfile << "FACE LIST:" << endl; //Logging Output<br></font><br><br> <font color=blue>for</font>(<font color=blue>int</font> i=0; i<Mesh_array[<font color=purple>num_obj-1</font>].num_faces; i++) <font color=gray>//Loop through data<br></font><br> {<br> fscanf(infile, <font color=darkred><font color=darkred><font color=darkred><font color=darkred><font color=darkred><font color=darkred>"%s"</font></font></font></font></font></font>, &stream); <font color=gray>//Skip "*MESH_FACE"<br></font><br> fscanf(infile, <font color=darkred><font color=darkred><font color=darkred><font color=darkred><font color=darkred><font color=darkred>"%s"</font></font></font></font></font></font>, &stream); <font color=gray>//Skip face index<br></font><br><br> fscanf(infile, <font color=darkred><font color=darkred><font color=darkred><font color=darkred><font color=darkred><font color=darkred>"%s"</font></font></font></font></font></font>, &stream); <font color=gray>//Skip 'A'<br></font><br> fscanf(infile, <font color=darkred><font color=darkred><font color=darkred>"%i"</font></font></font>, &Mesh_array[<font color=purple>num_obj-1</font>].face[<font color=purple>i</font>].x); <font color=gray>//Converts first index to int<br></font><br><br> fscanf(infile, <font color=darkred><font color=darkred><font color=darkred><font color=darkred><font color=darkred><font color=darkred>"%s"</font></font></font></font></font></font>, &stream); <font color=gray>//Skip 'B'<br></font><br> fscanf(infile, <font color=darkred><font color=darkred><font color=darkred>"%i"</font></font></font>, &Mesh_array[<font color=purple>num_obj-1</font>].face[<font color=purple>i</font>].y); <font color=gray>//Converts second index to int<br></font><br><br> fscanf(infile, <font color=darkred><font color=darkred><font color=darkred><font color=darkred><font color=darkred><font color=darkred>"%s"</font></font></font></font></font></font>, &stream); <font color=gray>//Skip 'C'<br></font><br> fscanf(infile, <font color=darkred><font color=darkred><font color=darkred>"%i"</font></font></font>, &Mesh_array[<font color=purple>num_obj-1</font>].face[<font color=purple>i</font>].z); <font color=gray>//Converts third index to int<br></font><br><br> <font color=blue>for</font>(<font color=blue>int</font> loop=0; loop<10; loop++) <font color=gray>//Skips over windings, smoothing values<br></font><br> fscanf(infile, <font color=darkred><font color=darkred><font color=darkred><font color=darkred><font color=darkred><font color=darkred>"%s"</font></font></font></font></font></font>, &stream);<br> }<br> }<br><br> <font color=blue>if</font>(S_stream == "*MESH_NORMALS") <font color=gray>//Imports triangle normals<br></font><br> {<br> fscanf(infile, <font color=darkred><font color=darkred><font color=darkred><font color=darkred><font color=darkred><font color=darkred>"%s"</font></font></font></font></font></font>, &stream); <font color=gray>//Skips bracket<br></font><br> <font color=gray>//outfile << "MESH NORMALS" << endl; //Logging Output<br></font><br><br> <font color=blue>for</font>(<font color=blue>int</font> i=0; i<Mesh_array[<font color=purple>num_obj-1</font>].num_vertex; i++) <font color=gray>//Loop through face normals<br></font><br> {<br> fscanf(infile, <font color=darkred><font color=darkred><font color=darkred><font color=darkred><font color=darkred><font color=darkred>"%s"</font></font></font></font></font></font>, &stream); <font color=gray>//Skips "*MESH_VERTEX"<br></font><br> fscanf(infile, <font color=darkred><font color=darkred><font color=darkred><font color=darkred><font color=darkred><font color=darkred>"%s"</font></font></font></font></font></font>, &stream); <font color=gray>//Skips vertex index<br></font><br><br> fscanf(infile, <font color=darkred><font color=darkred><font color=darkred>"%f"</font></font></font>, &Mesh_array[<font color=purple>num_obj-1</font>].fnormal[<font color=purple>i</font>].x); <font color=gray>//Converts x vertex value to int<br></font><br> fscanf(infile, <font color=darkred><font color=darkred><font color=darkred>"%f"</font></font></font>, &Mesh_array[<font color=purple>num_obj-1</font>].fnormal[<font color=purple>i</font>].z); <font color=gray>//Converts z vertex value to int<br></font><br> fscanf(infile, <font color=darkred><font color=darkred><font color=darkred>"%f"</font></font></font>, &Mesh_array[<font color=purple>num_obj-1</font>].fnormal[<font color=purple>i</font>].y); <font color=gray>//Converts y vertex value to int<br></font><br><br> <font color=blue>for</font>(<font color=blue>int</font> loop=0; loop<3; loop++) <font color=gray>//Loop through vertex normals<br></font><br> {<br> fscanf(infile, <font color=darkred><font color=darkred><font color=darkred><font color=darkred><font color=darkred><font color=darkred>"%s"</font></font></font></font></font></font>, &stream); <font color=gray>//Skips "*MESH_VERTEXNORMAL"<br></font><br> fscanf(infile, <font color=darkred><font color=darkred><font color=darkred><font color=darkred><font color=darkred><font color=darkred>"%s"</font></font></font></font></font></font>, &stream); <font color=gray>//Skips vertex normal index<br></font><br><br> fscanf(infile, <font color=darkred><font color=darkred><font color=darkred>"%f"</font></font></font>, &Mesh_array[<font color=purple>num_obj-1</font>].vnormal[<font color=purple>i</font>].x); <font color=gray>//Convert x value to int<br></font><br> fscanf(infile, <font color=darkred><font color=darkred><font color=darkred>"%f"</font></font></font>, &Mesh_array[<font color=purple>num_obj-1</font>].vnormal[<font color=purple>i</font>].z); <font color=gray>//Convert z value to int<br></font><br> fscanf(infile, <font color=darkred><font color=darkred><font color=darkred>"%f"</font></font></font>, &Mesh_array[<font color=purple>num_obj-1</font>].vnormal[<font color=purple>i</font>].y); <font color=gray>//Convert y value to int<br></font><br> }<br> }<br> }<br> }<br>}<br><br><br><font color=blue>void</font> Output_Obj() <font color=gray>//Used strictly for debugging purposes<br></font><br>{<br> outfile << "OUTPUT_OBJ()<font color=darkred>" << endl;<br> for(int i=0; i<num_obj; i++)<br> {<br> outfile << "</font>New Object:<font color=darkred>" << endl;<br> outfile << "</font>Vertices: <font color=darkred>" << Mesh_array.num_vertex << endl;<br> for(int j=0; j<Mesh_array.num_vertex; j++)<br> {<br> outfile << Mesh_array.vertex[j].x << "</font> <font color=darkred>";<br> outfile << Mesh_array.vertex[j].y << "</font> <font color=darkred>";<br> outfile << Mesh_array.vertex[j].z << "</font> <font color=darkred>" << endl;<br> }<br><br> outfile << endl << "</font>Faces: <font color=darkred>" << Mesh_array.num_faces << endl;<br> for(j=0; j<Mesh_array.num_faces; j++)<br> {<br> outfile << Mesh_array.face[j].x << "</font> <font color=darkred>";<br> outfile << Mesh_array.face[j].y << "</font> <font color=darkred>";<br> outfile << Mesh_array.face[j].z << "</font> <font color=darkred>" << endl;<br> }<br> outfile << endl;<br> }<br>}<br><br><br>GLuint Import(char *fname, GLuint map)<br>{<br> outfile.open("</font>log.txt<font color=darkred>");<br><br> if((infile = fopen(fname, "</font>r<font color=darkred>")) == NULL) <font color=gray>//Opens data file<br></font><br> outfile << "</font>Could not open file " << fname << endl; <font color=gray>//Outputs if file does not exist<br></font><br><br> Mesh_array.clear(); <font color=gray>//Clears mesh array of all values<br></font><br> map = NULL; <font color=gray>//Clears map of all values<br></font><br><br> Import_Obj(); <font color=gray>//Import the object<br></font><br><br> <font color=blue>if</font>(Mat_array.size() >= 0) <font color=gray>//Checks if materials exist in file<br></font><br> Import_Mat(); <font color=gray>//Import the materials<br></font><br><br> fclose(infile);<br> <font color=blue>return</font> Draw_Triangles();<br>}<br></pre><!–ENDSCRIPT–> <br>i hope this didnt sound to rude or something like that. Wildfire what i meant was with the code that i originally posted i thought that would be all i needed to give. oh well thanks guys and girls (havent met many coder girls but im sure they exist). <br><br><SPAN CLASS=editedby>[edited by - adam17 on August 20, 2003 5:27:21 PM]</SPAN>