¿Hay una manera de dividir una textura en una matriz de ellos usando tierra en C ++?

StackOverflow https://stackoverflow.com/questions/599264

  •  11-09-2019
  •  | 
  •  

Pregunta

Estoy usando suelo en mi proyecto, y yo tenga que tomar en una sola textura, y de convertirla en una gran variedad de texturas utilizando diferentes partes de la primera textura. (Para utilizar una hoja de sprites).

Estoy usando SDL y OpenGL por cierto.

¿Fue útil?

Solución

La forma más habitual el uso de láminas de sprites con un API de OpenGL 3D moderno como es el uso de coordenadas de textura para hacer frente a diferentes partes de su textura individuo. Si bien se puede dividir para arriba es mucho más amigable de los recursos a utilizar las coordenadas de textura.

Por ejemplo, si tenía una hoja de sprites sencilla con 3 marcos horizontalmente, cada 32 píxeles por 32 píxeles (para un tamaño total de 96x32), se utiliza el siguiente código para dibujar la tercera trama:

// 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();
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top