2009-03-01 16 views

Antwort

1

Die typische Art, Sprite-Sheeting mit einer modernen 3D-API wie OpenGL zu verwenden, besteht darin, Texturkoordinaten zu verwenden, um verschiedene Teile Ihrer individuellen Textur zu adressieren. Während Sie es aufteilen können, ist es viel ressourcenschonender, Texturkoordinaten zu verwenden.

Zum Beispiel, wenn Sie hatte eine einfache Sprite Blatt mit 3 Rahmen horizontal, die jeweils 32 Pixel mal 32 Pixel (für eine Gesamtgröße von 96x32), würde man den folgenden Code verwenden, um die dritte Rahmen zu zeichnen:

// 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(); 
+0

Ja, aber ich muss auch Höhe haben. – William

+0

Höhe funktioniert genauso wie Breite, benutze einfach die gleichen Variablen wie ich, skaliere sie aber basierend auf deiner Gesamthöhe anstatt der Gesamtbreite. –