2009-05-24 11 views
2

Ich arbeite mit der iPhone OpenGLES-Implementierung und möchte endlos eine Textur über eine einfache Oberfläche scrollen (zwei Dreiecke bilden ein Rechteck). Das sollte einfach sein, aber es ist nicht etwas, das ich vorher gemacht habe und ich muss etwas verpassen. Ich kann die Textur gut drehen, aber Übersetzen funktioniert überhaupt nicht. Habe ich ein kleines Implementierungsproblem oder mache ich etwas grundsätzlich falsch?Animieren einer Textur über eine Fläche in OpenGL

 
// move texture 
glMatrixMode(GL_TEXTURE); 
glPushMatrix(); 
glLoadIdentity(); 

    // increment offset - no reset for demo purposes 
wallOffset += 1.0; 

    // move the texture - this does not work 
glTranslatef(wallOffset,wallOffset,0.0); 

    // rotate the texture - this does work 
//glRotatef(wallOffset, 1.0, 0.0, 0.0); 

glMatrixMode(GL_MODELVIEW); 

glBindTexture(GL_TEXTURE_2D, WallTexture.name); 
glTexCoordPointer(2, GL_FLOAT, 0, coordinates); 

// simple drawing code 
glNormalPointer(GL_FLOAT, 0, normals); 
glVertexPointer(3, GL_FLOAT, 0, vertices); 
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); 

    // push matrix back 
glMatrixMode(GL_TEXTURE); 
glPopMatrix(); 
glMatrixMode(GL_MODELVIEW); 

Antwort

8

Sie erhöhen Ihren Textur-Offset um 1.0f; Texturenkoordinaten werden jedoch im Bereich [0, 1] berücksichtigt, sodass Sie die Texturkoordinaten nicht ändern (vorausgesetzt, Sie haben eine Art Umbruch aktiviert).

Versuchen Sie, dieses Inkrement zu ändern (versuchen Sie .01f, oder vielleicht etwas abhängig von der Framerate) und sehen, ob es funktioniert. Wenn nicht, dann hat das etwas mit den Texturparametern zu tun, die Sie aktiviert haben.

+0

Duh, ich wusste, dass ich etwas Dummes tat. Vielen Dank – Cruachan