build mipmaps for textures

This commit is contained in:
Josh Holtrop 2011-05-26 21:18:17 -04:00
parent d7dfddda4e
commit 73d418b35c

View File

@ -1349,7 +1349,23 @@ bool Engine::loadWFObjFile(const char *fname, WFObj::Buffer & buff)
GLuint Engine::loadTexture(const char *fname)
{
string path = locateResource(fname);
return m_textureCache.load(path.c_str());
GLuint id = m_textureCache.load(path.c_str());
if (id != 0)
{
int width, height;
glBindTexture(GL_TEXTURE_2D, id);
glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_WIDTH, &width);
glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_HEIGHT, &height);
char *data = (char *) malloc(4 * width * height);
glGetTexImage(GL_TEXTURE_2D, 0, GL_RGBA, GL_UNSIGNED_BYTE, data);
gluBuild2DMipmaps(GL_TEXTURE_2D, GL_RGBA, width, height, GL_RGBA,
GL_UNSIGNED_BYTE, data);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,
GL_LINEAR_MIPMAP_LINEAR);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
free(data);
}
return id;
}
/******** Engine::PickedObject functions ********/