Sie können immer einen langen Puffer "Vertex; Texcoord" wiederholen lassen. Und verwenden Sie einfach Indizes, wie Sie gesagt haben. Es ist wahrscheinlich am einfachsten und ähnelt dem, was Sie wissen.
Wenn Sie etwas Speicherplatz sparen möchten. Es gibt eine ziemlich nette Lösung, und es ist, ein Sprite im Puffer mit vereinigten Texcoords zu haben und eine UVs-Transformationsmatrix zu erstellen und es an Ihren Shader zu senden und Texcoords damit zu multiplizieren (im Vertex-Shader).
Sie müssen keine Matrizen selbst erstellen, wenn Sie damit nicht einverstanden sind. Sie können einfach reguläre GL-Funktionen verwenden und dann die Matrix mit der glGetFloatv
Funktion lesen . So was:
glGetFloatv (GL_MODELVIEW_MATRIX ,&g_TexCoordMat);
Ich habe ein Bild erstellt, um es besser zu beschreiben. glTranslate ang glScale kann so angesehen werden, dass sie sich nur mit der UV-Raumbasis bewegen.
Wenn Sie nicht wissen, wie man eine Matrix an den Shader sendet, kann ich Ihnen Code mitteilen.
Bearbeiten: Bild hinzugefügt
(Quelle für Spritesheet, das ich verwendet habe: funorb.com )