From 73d418b35c591e661b8847331b7ef6dfa043e65c Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Thu, 26 May 2011 21:18:17 -0400 Subject: [PATCH] build mipmaps for textures --- src/Engine.cc | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/Engine.cc b/src/Engine.cc index 622941a..2eed72e 100644 --- a/src/Engine.cc +++ b/src/Engine.cc @@ -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 ********/