Skip to main content
GameDev.net gamedev.net
🔒 Locked

shouldn't this work?

Started by FreJa Apr 18, 2003 at 3:02 PM 0 replies 750+ views
Original Post
FreJa
FreJa
Hi, I''m tying to read info from a text file to create an opengl 3d object (3d model)... each model can have more than one mesh, and thats where the problem is: - I have no problems reading the number of meshes available. - This is my read function:
  
for(int i=0; i<m_iNumMeshes; i++)
	{
		// Read Vertices

		fscanf(file, "    verts %d", &m_pMeshes->m_iNumVerts);
		log.LogWrite("Found vertice\n");
		m_pMeshes->m_pVert = new mdx_vertex_t[m_pMeshes->m_iNumVerts];
		for(int i=0; i<m_pMeshes->m_iNumVerts; i++)
		{
			mdx_vertex_t &v = m_pMeshes->m_pVert[i];
			fscanf(file, "     %f %f %f  %f %f %f  %f %f", &v.position.x, &v.position.y, &v.position.z,
														&v.normal.x, &v.normal.y, &v.normal.z,
														&v.texCoord.x, &v.texCoord.y);
		}

		// Read Faces

		fscanf(file, "    faces %d", &m_pMeshes->m_iNumFaces);
		log.LogWrite("Found face\n");
		m_pMeshes->m_pFace = new mdx_face_t[m_pMeshes->m_iNumFaces];
		for(int j=0; j<m_pMeshes->m_iNumFaces; j++)
		{
			mdx_face_t &f = m_pMeshes->m_pFace[j];
			fscanf(file, "     %d %d %d", &f.vertIndex[0], &f.vertIndex[1], &f.vertIndex[2]);
		}
	}
  
- This is my draw function:
  
for(int w=0; w<m_iNumMeshes; w++)
	{
		glColor3f(1.0, 1.0, 1.0);
		glTranslatef(0.0, 0.0, -5.0);
		glRotatef(xRot, 1.0, 0.0, 0.0);
		glRotatef(yRot, 0.0, 1.0, 0.0);
		glBegin(GL_TRIANGLES);
		for(int i=0; i<m_pMeshes->m_iNumFaces; i++)
		{
			for(int j=0; j<3; j++)
			{
				int vertIndex = m_pMeshes->m_pFace[i].vertIndex[j];
				glNormal3f(m_pMeshes->m_pVert[vertIndex].normal.x, m_pMeshes->m_pVert[vertIndex].normal.y, m_pMeshes->m_pVert[vertIndex].normal.z); 
				glVertex3f(m_pMeshes->m_pVert[vertIndex].position.x, m_pMeshes->m_pVert[vertIndex].position.y, m_pMeshes->m_pVert[vertIndex].position.z); 
			}
		}
		glEnd();
	}
  
and when trying to read something like this:
nummeshes 2
beginnode
  textures 1
   "C:\test.bmp"
    verts 24
     -1.0 -1.0 0.0  0.0 0.0 -1.0  0.0 0.0
     -1.0 1.0 0.0  0.0 0.0 -1.0  0.0 0.0
     1.0 1.0 0.0  0.0 0.0 -1.0  0.0 0.0
     1.0 -1.0 0.0  0.0 0.0 -1.0  0.0 0.0
     -1.0 -1.0 1.0  0.0 0.0 1.0  0.0 0.0
     1.0 -1.0 1.0  0.0 0.0 1.0  0.0 0.0
     1.0 1.0 1.0  0.0 0.0 1.0  0.0 0.0
     -1.0 1.0 1.0  0.0 0.0 1.0  0.0 0.0
     -1.0 -1.0 0.0  0.0 -1.0 0.0  0.0 0.0
     1.0 -1.0 0.0  0.0 -1.0 0.0  0.0 0.0
     1.0 -1.0 1.0  0.0 -1.0 0.0  0.0 0.0
     -1.0 -1.0 1.0  0.0 -1.0 0.0  0.0 0.0
     1.0 -1.0 0.0  1.0 0.0 0.0  0.0 0.0
     1.0 1.0 0.0  1.0 0.0 0.0  0.0 0.0
     1.0 1.0 1.0  1.0 0.0 0.0  0.0 0.0
     1.0 -1.0 1.0  1.0 0.0 0.0  0.0 0.0
     1.0 1.0 0.0  0.0 1.0 0.0  0.0 0.0
     -1.0 1.0 0.0  0.0 1.0 0.0  0.0 0.0
     -1.0 1.0 1.0  0.0 1.0 0.0  0.0 0.0
     1.0 1.0 1.0  0.0 1.0 0.0  0.0 0.0
     -1.0 1.0 0.0  -1.0 0.0 0.0  0.0 0.0
     -1.0 -1.0 0.0  -1.0 0.0 0.0  0.0 0.0
     -1.0 -1.0 1.0  -1.0 0.0 0.0  0.0 0.0
     -1.0 1.0 1.0  -1.0 0.0 0.0  0.0 0.0
    faces 12
     0 1 2
     2 3 0
     4 5 6
     6 7 4
     8 9 10
     10 11 8
     12 13 14
     14 15 12
     16 17 18
     18 19 16
     20 21 22
     22 23 20
endnode
beginnode
  textures 0
    verts 4
     -3.0 -3.0 0.0  0.0 0.0 -1.0  0.0 0.0
     -3.0 3.0 0.0  0.0 0.0 -1.0  0.0 0.0
     0.0 3.0 0.0  0.0 0.0 -1.0  0.0 0.0
     0.0 -3.0 0.0  0.0 0.0 -1.0  0.0 0.0
    faces 2
     0 1 2
     2 3 0
endnode
 
I get a runtime error, and If I debug it, I get an "Object reference not set to an instance of an object" in the glNormal3f line... Whats the prob? Thanks
"Through me the road to the city of desolation,Through me the road to sorrows diuturnal,Through me the road among the lost creation."

Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.