Textures and Color: why don't we get along?

Started by
0 comments, last by masonium 22 years, 6 months ago
I have two functions, in two separate classes.
  
void BlockDudeEditor::DrawLevel()
{
	glColor3f(1.0f, 1.0f, 1.0f);

	float offset = grid_l / 2.0f;
	float grid_pos_x, grid_pos_y;
	
	// first draw the background

	glEnable(GL_TEXTURE_2D);
	glBindTexture(GL_TEXTURE_2D, background_tex);
	glBegin(GL_QUADS);
		glTexCoord2f(0.0f, 0.0f);
		glVertex3f(-NUM_TILES_X * grid_l * 0.5f, 
			-NUM_TILES_Y * grid_l * 0.5f, -offset); // -offset to have the background behind the cubes

		
		glTexCoord2f(0.0f, 1.0f);
		glVertex3f(-NUM_TILES_X * grid_l * 0.5f, 
			NUM_TILES_Y * grid_l * 1.5f, -offset);
		
		glTexCoord2f(2.0f, 1.0f);
		glVertex3f(NUM_TILES_X * grid_l * 1.5f, 
			NUM_TILES_Y * grid_l * 1.5f, -offset);
		
		glTexCoord2f(2.0f, 0.0f);
		glVertex3f(NUM_TILES_X * grid_l * 1.5f, 
			-NUM_TILES_Y * grid_l * 0.5f, -offset);
	glEnd();

	for (int x = 0; x < NUM_TILES_X; x++)
	{
		for (int y = 0; y < NUM_TILES_Y; y++)
		{
			if (grid[x][y] == 0)
				continue;

			switch (grid[x][y])
			{
			case 1:
				glBindTexture(GL_TEXTURE_2D, brick_tex);
				break;
			case 2:
				glBindTexture(GL_TEXTURE_2D, block_tex);
				break;
			default: break;
			}
			
			if (x == 0)
				if (y == 9)
					glBindTexture(GL_TEXTURE_2D, brick_tex);

			grid_pos_x = (x) * grid_l + offset;
			grid_pos_y = (y) * grid_l + offset;
				
			glPushMatrix();
				glTranslatef(grid_pos_x, grid_pos_y, 0.0f);
				DrawCube(grid_l, 1.0f, false, GL_QUADS);
			glPopMatrix();
		}
	}
}
  
and...
  
void BlockDudeCursor::Draw(BlockDudeEditor bde)
	{
		glDisable(GL_TEXTURE_2D);
		glPushMatrix();
			glColor3f(0.0f, 0.0f, 1.0f);
			glTranslatef((x + 0.5f) * bde.grid_l, (y + 0.5f) * bde.grid_l, 0.0f);
			DrawCube(bde.grid_l, 1.0f, false, GL_QUADS);
		glPopMatrix();
		glEnable(GL_TEXTURE_2D);
	}
  
whenever I call both of these functions, the texture for the the DrawLevel function does not show up. instead, it''s just the color that I declare in BlockDudeCursor::Draw. When I don''t call BlockDudeCursor::Draw, the texture shows up perfectly. What is the problem?
Advertisement
here''s a hint:


glDisable(GL_TEXTURE_2D);
glPushMatrix();
glColor3f(0.0f, 0.0f, 1.0f);
glTranslatef((x + 0.5f) * bde.grid_l, (y + 0.5f) * bde.grid_l, 0.0f);
DrawCube(bde.grid_l, 1.0f, false, GL_QUADS);
glPopMatrix();
glEnable(GL_TEXTURE_2D);


ARGH!!!!!

This topic is closed to new replies.

Advertisement