Есть ли способ разделить одну текстуру на массив из них, используя SOIL в C ++? - PullRequest
0 голосов
/ 01 марта 2009

Я использую SOIL в своем проекте, и мне нужно взять одну текстуру, а затем преобразовать ее в массив текстур, используя разные части первой текстуры. (Чтобы использовать спрайт лист).

Кстати, я использую SDL и OpenGL.

1 Ответ

1 голос
/ 01 марта 2009

Типичный способ использования спрайтов с современными 3D-API, такими как OpenGL, заключается в использовании текстурных координат для адресации различных частей вашей отдельной текстуры. Хотя вы можете разбить его на части, гораздо удобнее использовать текстурные координаты.

Например, если бы у вас был простой спрайт с 3 кадрами по горизонтали, каждый по 32 на 32 пикселя (для общего размера 96x32), вы бы использовали следующий код для рисования 3-го кадра:

// I assume you have bound your source texture
// This is the U coordinate's origin in texture space
float xStart = 64.0f / 96.0f;

// This is one frame width in texture space
float xIncrement = 32.0f / 96.0f;

glBegin(GL_QUADS);
  glTexCoord2f(xStart, 0);
  glVertex2f(-16.0f, 16.0f);

  glTexCoord2f(xStart, 1.0f);
  glVertex2f(-16.0f, -16.0f);

  glTexCoord2f(xStart + xIncrement, 0);
  glVertex2f(16.0f, 16.0f);

  glTexCoord2f(xStart + xIncrement, 1.0f);
  glVertex2f(16.0f, -16.0f);
glEnd();
...