Как в OpenGL выбрать область из файла изображения, который был загружен с помощью IMG_Load()
?
(Я работаю над картой тайлов для простой 2D игры)
Я использую следующий принцип для загрузки файла изображения в текстуру:
GLuint loadTexture( const std::string &fileName ) {
SDL_Surface *image = IMG_Load(fileName.c_str());
unsigned object(0);
glGenTextures(1, &object);
glBindTexture(GL_TEXTURE_2D, object);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, image->w, image->h, 0, GL_RGBA, GL_UNSIGNED_BYTE, image->pixels);
SDL_FreeSurface(image);
return object;
}
Затем я использую следующее для рисования текстуры в моей части рендеринга:
glColor4ub(255,255,255,255);
glBindTexture(GL_TEXTURE_2D, texture);
glBegin(GL_QUADS);
glTexCoord2d(0,0); glVertex2f(x,y);
glTexCoord2d(1,0); glVertex2f(x+w,y);
glTexCoord2d(1,1); glVertex2f(x+w,y+h);
glTexCoord2d(0,1); glVertex2f(x,y+h);
glEnd();
Теперь мне нужна функция, которая позволяет мне выбирать определенные прямоугольные части из GLuint
, которые я получаю при вызове loadTexture( const std::string &fileName )
, так что я могу затем использовать приведенный выше код для привязки этих частей к прямоугольникам а затем нарисовать их на экране. Что-то вроде:
GLuint getTileTexture( GLuint spritesheet, int x, int y, int w, int h )