PDA

View Full Version : Texture Mipmapping



dr4cula
07-18-2013, 11:18 AM
Hello,

I've been trying to get mipmapping working but I'm really confused as to why my approach doesn't work. Here's what I've got.

texture related init:


// generate the texture
CreateGLTexture("panelbrn01scr.tga", wallPieceTexture_);
glBindTexture(GL_TEXTURE_2D, wallPieceTexture_);

// set up the texture function
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);

// set up the texture filtering
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);

// generate the mipmap data for the texture
glGenerateMipmap(GL_TEXTURE_2D);

the render call:


glEnable(GL_TEXTURE_2D);

glBindTexture(GL_TEXTURE_2D, wallPieceTexture_);

glBindVertexArray(wallPieceArray_);

glPushMatrix();
for(int i = 0; i < 10; i++) {
glPushMatrix();
for(int j = 0; j < 10; j++) {
glDrawArrays(GL_TRIANGLES, 0, M_WALL_PIECE_VERTICES);
glTranslatef(1.0f, 0.0f, 0.0f);
}
glPopMatrix();
glTranslatef(0.0f, 1.0f, 0.0f);
}
glPopMatrix();


glDisable(GL_TEXTURE_2D);

CreateGLTexture() by Matthew Brett:


bool CreateGLTexture(char *name, GLuint & TexID )
{
LoadTGA(name);


// Typical Texture Generation Using Data From The TGA ( CHANGE )
glGenTextures(1, &TexID); // Create The Texture ( CHANGE )
glBindTexture(GL_TEXTURE_2D, TexID);
glTexImage2D(GL_TEXTURE_2D, 0, texture_bpp / 8, texture_width, texture_height, 0, texture_type, GL_UNSIGNED_BYTE, texture_imageData);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTE R,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTE R,GL_LINEAR);

if (texture_imageData) // If Texture Image Exists ( CHANGE )
{
free(texture_imageData); // Free The Texture Image Memory ( CHANGE )
}



return false;
}

I would post the rendered image but due to being too new of a member the forum has restricted me in doing so. However, I'm sure all of you know what artifacts I get due to no mipmapping so shouldn't be a problem.

I'm not sure as to where I'm going wrong here. Any help would be greatly appreciated!

Thanks in advance!

dr4cula
07-22-2013, 10:55 AM
Found the issue! The problem was with the program flow: I initialized other data that set the MIN_FILTER differently after generating the mipmaps. After adding the calls to the glTexParameteri() to the render function just before rendering the mipmapped textured object, everything worked fine.