Existe uma maneira de dividir uma textura em uma matriz deles o uso do solo em C ++?

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

  •  11-09-2019
  •  | 
  •  

Pergunta

Eu estou usando SOLO no meu projeto e eu preciso levar em uma textura única, e de convertê-lo em uma matriz de texturas usando diferentes partes do primeiro textura. (Para usar uma folha de sprite).

Eu estou usando SDL e OpenGL pelo caminho.

Foi útil?

Solução

A maneira típica de uso Sprite sheeting com uma API 3D moderno, como OpenGL é usar textura coordenadas para abordar diferentes partes de sua textura individual. Enquanto você pode dividi-lo é muito mais recursos amigável de usar coordenadas de textura.

Por exemplo, se você tivesse uma folha de sprite simples com 3 quadros horizontalmente, cada 32 pixels por 32 pixels (para um tamanho total de 96x32), você usaria o seguinte código para desenhar o 3º quadro:

// 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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top