Advertisement

why cant I use list when I use multiple textures

Started by September 03, 2004 10:40 PM
1 comment, last by zacharya 20 years, 5 months ago
I just finished reading nehe's lesson 7 on texture filter and lighting....and I made a little bit of change from the code given. I tried using list instead of just calling glVertex3f over and over again. the problem is when I use glCallList(...) it didn't display anything....I just wondering if it is because I use multiple textures? my code : didn't work :

void setList(void)
{
	
	glNewList(list,GL_COMPILE);
	
		glBegin(GL_QUADS);

			glNormal3f(0.0f,0.0f,1.0f);
			glTexCoord2f(0.0f,1.0f);
			glVertex3f(-1.0f,1.0f,1.0f);
			glTexCoord2f(1.0f,1.0f);
			glVertex3f(1.0f,1.0f,1.0f);
			glTexCoord2f(1.0f,0.0f);
			glVertex3f(1.0f,-1.0f,1.0f);
			glTexCoord2f(0.0f,0.0f);
			glVertex3f(-1.0f,-1.0f,1.0f);
			
			glNormal3f(0.0,0.0f,-1.0f);
			glTexCoord2f(1.0f,1.0f);
			glVertex3f(-1.0f,1.0f,-1.0f);
			glTexCoord2f(0.0f,1.0f);
			glVertex3f(1.0f,1.0f,-1.0f);
			glTexCoord2f(0.0f,0.0f);
			glVertex3f(1.0f,-1.0f,-1.0f);
			glTexCoord2f(1.0f,0.0f);
			glVertex3f(-1.0f,-1.0f,-1.0f);
		
			glNormal3f(-1.0f,0.0f,0.0f);
			glTexCoord2f(0.0f,0.0f);
			glVertex3f(-1.0f,-1.0f,-1.0f);
			glTexCoord2f(1.0f,0.0f);
			glVertex3f(-1.0f,-1.0f,1.0f);
			glTexCoord2f(1.0f,1.0f);
			glVertex3f(-1.0f,1.0f,1.0f);
			glTexCoord2f(0.0f,1.0f);
			glVertex3f(-1.0f,1.0f,-1.0f);
			
			
			glNormal3f(1.0f,0.0f,0.0f);
			glTexCoord2f(1.0f,0.0f);
			glVertex3f(1.0f,-1.0f,-1.0f);
			glTexCoord2f(0.0f,0.0f);
			glVertex3f(1.0f,-1.0f,1.0f);
			glTexCoord2f(0.0f,1.0f);
			glVertex3f(1.0f,1.0f,1.0f);
			glTexCoord2f(1.0f,1.0f);
			glVertex3f(1.0f,1.0f,-1.0f);
		
			glNormal3f(0.0f,1.0f,0.0f);
			glTexCoord2f(0.0f,0.0f);
			glVertex3f(-1.0f,1.0f,1.0f);
			glTexCoord2f(0.0f,1.0f);
			glVertex3f(-1.0f,1.0f,-1.0f);
			glTexCoord2f(1.0f,1.0f);
			glVertex3f(1.0f,1.0f,-1.0f);
			glTexCoord2f(1.0f,0.0f);
			glVertex3f(1.0f,1.0f,1.0f);
			
			
			glNormal3f(0.0f,-1.0f,0.0f);
			glTexCoord2f(1.0f,0.0f);
			glVertex3f(-1.0f,-1.0f,1.0f);
			glTexCoord2f(1.0f,1.0f);
			glVertex3f(-1.0f,-1.0f,-1.0f);
			glTexCoord2f(0.0f,1.0f);
			glVertex3f(1.0f,-1.0f,-1.0f);
			glTexCoord2f(0.0f,0.0f);
			glVertex3f(1.0f,-1.0f,1.0f);


		glEnd();

	glEndList();
}

int DrawGLScene(GLvoid)									// Here's Where We Do All The Drawing
{
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);	

	glLoadIdentity();									
	glTranslatef(0.0f,0.0f,z);	
	
	glRotatef(xrot,1.0f,0.0f,0.0f);
	glRotatef(yrot,0.0f,1.0f,0.0f);
	
	
	glBindTexture(GL_TEXTURE_2D, texture[filter]);
	glCallList(list);

	xrot +=xspeed;
	yrot +=yspeed;

	return TRUE;										
}


I use the ::setList() function in the initGL() function..... this code works.... int DrawGLScene(GLvoid) // Here's Where We Do All The Drawing { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); glTranslatef(0.0f,0.0f,z); glRotatef(xrot,1.0f,0.0f,0.0f); glRotatef(yrot,0.0f,1.0f,0.0f); glBindTexture(GL_TEXTURE_2D, texture[filter]); glBegin(GL_QUADS); glNormal3f(0.0f,0.0f,1.0f); glTexCoord2f(0.0f,1.0f); glVertex3f(-1.0f,1.0f,1.0f); glTexCoord2f(1.0f,1.0f); glVertex3f(1.0f,1.0f,1.0f); glTexCoord2f(1.0f,0.0f); glVertex3f(1.0f,-1.0f,1.0f); glTexCoord2f(0.0f,0.0f); glVertex3f(-1.0f,-1.0f,1.0f); glNormal3f(0.0,0.0f,-1.0f); glTexCoord2f(1.0f,1.0f); glVertex3f(-1.0f,1.0f,-1.0f); glTexCoord2f(0.0f,1.0f); glVertex3f(1.0f,1.0f,-1.0f); glTexCoord2f(0.0f,0.0f); glVertex3f(1.0f,-1.0f,-1.0f); glTexCoord2f(1.0f,0.0f); glVertex3f(-1.0f,-1.0f,-1.0f); glNormal3f(-1.0f,0.0f,0.0f); glTexCoord2f(0.0f,0.0f); glVertex3f(-1.0f,-1.0f,-1.0f); glTexCoord2f(1.0f,0.0f); glVertex3f(-1.0f,-1.0f,1.0f); glTexCoord2f(1.0f,1.0f); glVertex3f(-1.0f,1.0f,1.0f); glTexCoord2f(0.0f,1.0f); glVertex3f(-1.0f,1.0f,-1.0f); glNormal3f(1.0f,0.0f,0.0f); glTexCoord2f(1.0f,0.0f); glVertex3f(1.0f,-1.0f,-1.0f); glTexCoord2f(0.0f,0.0f); glVertex3f(1.0f,-1.0f,1.0f); glTexCoord2f(0.0f,1.0f); glVertex3f(1.0f,1.0f,1.0f); glTexCoord2f(1.0f,1.0f); glVertex3f(1.0f,1.0f,-1.0f); glNormal3f(0.0f,1.0f,0.0f); glTexCoord2f(0.0f,0.0f); glVertex3f(-1.0f,1.0f,1.0f); glTexCoord2f(0.0f,1.0f); glVertex3f(-1.0f,1.0f,-1.0f); glTexCoord2f(1.0f,1.0f); glVertex3f(1.0f,1.0f,-1.0f); glTexCoord2f(1.0f,0.0f); glVertex3f(1.0f,1.0f,1.0f); glNormal3f(0.0f,-1.0f,0.0f); glTexCoord2f(1.0f,0.0f); glVertex3f(-1.0f,-1.0f,1.0f); glTexCoord2f(1.0f,1.0f); glVertex3f(-1.0f,-1.0f,-1.0f); glTexCoord2f(0.0f,1.0f); glVertex3f(1.0f,-1.0f,-1.0f); glTexCoord2f(0.0f,0.0f); glVertex3f(1.0f,-1.0f,1.0f); glEnd(); //glCallList(list); xrot +=xspeed; yrot +=yspeed; return TRUE; } [/source] I just curious why can't I use list here.....or did I make another stupid mistake......
being young is a treasure that can''t be valued
in SetList() function, add this line on top:
list = glGenLists(1);
before glNewList(list,GL_COMPILE); now should work (i hope :P )

Advertisement
thanks man...indeed I forgot to set a value for the list.....
being young is a treasure that can''t be valued

This topic is closed to new replies.

Advertisement