Exemple #1
0
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;
  }
}
Exemple #2
0
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;
}