bool Texture::load(const std::string &textureName, GLuint *pTexture, ...) { // Make sure the named texture is in the map. TextureMap::const_iterator textureIt = TexturePrivate::textureMap.find(textureName); if (textureIt == TexturePrivate::textureMap.end()) { return false; } // Pull the pathname out of the descriptor and use it for the PNG load. TextureDescriptor* desc = textureIt->second; const std::string& filename = desc->pathname(); ImageData image; if (desc->filetype() == TextureDescriptor::FileTypePNG) { PNGReader reader(filename); if (!image.load(reader)) return false; } else if (desc->filetype() == TextureDescriptor::FileTypeJPEG) { JPEGReader reader(filename); if (!image.load(reader)) return false; } va_list ap; va_start(ap, pTexture); GLint arg; while ((arg = va_arg(ap, GLint)) != 0) { GLint arg2 = va_arg(ap, GLint); setup_texture(pTexture, image, arg, arg2); pTexture++; } va_end(ap); return true; }