void Texture::reload() { int i; switch(_target) { case GL_TEXTURE_CUBE_MAP: for(i=0;i<6;i++) if (_filename_cube[i]) { loadTextureFile( _filename_cube[i],_name, GL_TEXTURE_CUBE_MAP,CUBEMAP_DATA[i].textureTarget, _loadHDR); } break; case GL_TEXTURE_2D: if (_filename) loadTextureFile(_filename,_name,_target,_target,_loadHDR); break; } }
int Texture::load(const char *fn, int flags) { char fn_buf[512]; char *fn_cube[6]; int i; _loadHDR=flags&TEXTURE_LOAD_HDR; if (flags&TEXTURE_LOAD_CUBEMAP) { _target=GL_TEXTURE_CUBE_MAP; printf("loading cubemap texture.. %s\n",fn); for(i=0;i<6;i++) { if (_filename_cube[i]) free((void*)_filename_cube[i]); _snprintf(fn_buf,sizeof(fn_buf),fn,CUBEMAP_DATA[i].name); printf(" %s (%s): ",CUBEMAP_DATA[i].name,fn_buf); if (_filename_cube[i]=vfs_locate(fn_buf,REPOSITORY_MASK_TEXTURE)) { printf("%s\n",_filename_cube[i]); loadTextureFile( _filename_cube[i],_name, GL_TEXTURE_CUBE_MAP,CUBEMAP_DATA[i].textureTarget, _loadHDR); } else { printf(" <not found> %s\n",_filename_cube[i]); } } glBindTexture(GL_TEXTURE_CUBE_MAP,_name); glTexParameteri(GL_TEXTURE_CUBE_MAP,GL_TEXTURE_MIN_FILTER,GL_LINEAR); glTexParameteri(GL_TEXTURE_CUBE_MAP,GL_TEXTURE_MAG_FILTER,GL_LINEAR); glTexParameteri(GL_TEXTURE_CUBE_MAP,GL_TEXTURE_WRAP_S,GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_CUBE_MAP,GL_TEXTURE_WRAP_T,GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_CUBE_MAP,GL_TEXTURE_WRAP_R,GL_CLAMP_TO_EDGE); glBindTexture(GL_TEXTURE_CUBE_MAP,0); } else { if (_filename) free((void*)_filename); _filename=vfs_locate(fn,REPOSITORY_MASK_TEXTURE); if (_filename) { loadTextureFile(_filename,_name,_target,_target, _loadHDR); } else { LOG_WARNING( "WARNING: unable to locate texture file '%s'\n",fn); } } return 1; }
int BitmapHandler::getTextureFile(const std::string &name, bool useCache) { int width, height; int tex = _findTexture(name, width, height); if(tex == 0 ) { int width, height; tex = loadTextureFile((char *) name.c_str(), width, height, TEX_MODE_DEFAULT, useCache); addTexture(name, tex, width, height); } return tex; }