Я не уверен насчет конкретного метода, но вот мой метод для поддержки Spritesheets ...
Сначала я загружаю все изображение в одну текстуру, затем назначаю несколько переменных, чтобы помочь определить, какую часть листа Sprite я хочу отобразить, используя следующий метод:
public void setSpriteSheetPosition(int columns, int rows, int which_column, int which_row, int wide, int tall)
{
this.columns = columns; //Number of columns the sprite sheet has
this.rows = rows; //Number of rows the sprite sheet has.
this.which_column = which_column; //Which column and row I want to display on the Sprite
this.which_row = which_row;
this.wide = wide; //How many cells wide I want the sprite to be composed of
this.tall = tall; //How many cells tall I want the sprite to be composed of
}
Последние две переменные позволяют мне иметь таблицу с переменными размерами ячеек.
Тогда мой метод рендеринга Sprite выглядит следующим образом ...
public void draw()
{
glPushMatrix();
imageData.getTexture().bind();
int tx = (int)location.x;
int ty = (int)location.y;
glTranslatef(tx, ty, location.layer);
float height = imageData.getTexture().getHeight();
float width = imageData.getTexture().getWidth();
float texture_X = ((float)which_column/(float)columns)*width;
float texture_Y = ((float)which_row/(float)rows)*height;
float texture_XplusWidth = ((float)(which_column+wide)/(float)columns)*width;
float texture_YplusHeight = ((float)(which_row+tall)/(float)rows)*height;
glBegin(GL_QUADS);
{
glTexCoord2f(texture_X, texture_Y);
glVertex2f(0, 0);
glTexCoord2f(texture_X, texture_YplusHeight);
glVertex2f(0, getHeight());
glTexCoord2f(texture_XplusWidth, texture_YplusHeight);
glVertex2f(getWidth(), getHeight());
glTexCoord2f(texture_XplusWidth, texture_Y);
glVertex2f(getWidth(), 0);
}
glEnd();
glPopMatrix();
}
Который будет рисовать правильную ячейку (или ячейки) таблицы спрайтов.