Показать сообщение отдельно
Старый 09.09.2009, 19:59   #1
aureli0
ПроЭктировщик
 
Регистрация: 19.03.2007
Сообщений: 134
Написано 10 полезных сообщений
(для 20 пользователей)
SDL+Open GL загрузка участка текстуры

Я использую для загрузки текстуры из файла вот такую функцию. Автор не я, поэтому не все с ней ясно(( Главное что хоть работает))

//Функция загрузки текстур из файла в переменную
bool load(string file, GLuint &tex)
 {
  SDL_Surface *temp = NULL;
  GLint maxTexSize;
  GLuint glFormat = GL_RGBA;
      
  if(file.substr(file.length()-3,3).compare("jpg") == 0)
   {
    glFormat = GL_RGB;
   }
      
  glGetIntegerv(GL_MAX_TEXTURE_SIZE, &maxTexSize); 

  temp = IMG_Load(file.data());

  if(temp == NULL)
   {
    cout << "Texture manager ERROR: " << file << " : "<< SDL_GetError() << endl;
    SDL_FreeSurface( temp );
    return 0;
   }
      
  if(temp->w > maxTexSize)
   {
    cout << "Texture manager ERROR: " << file << " texturesize too large." << endl;
   }
 
  glGenTextures(1, &tex);
  glBindTexture(GL_TEXTURE_2D, tex);

  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);

  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP );
  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP );

  glTexImage2D(GL_TEXTURE_2D, 0, glFormat, temp->w, temp->h, 0, glFormat, GL_UNSIGNED_BYTE, temp->pixels);
  SDL_FreeSurface( temp );

  return 1;
}
Можно ли ее как нибудь модифицировать чтобы грузить не всю текстуру целиком, а кусок из нее с вершинами x1,y1 ,x2,y2?
(Offline)
 
Ответить с цитированием