Animating a texture across a surface in OpenGL
I'm working with the iPhone OpenGLES implementation and I wish to endlessly scroll a texture across a simple surface (two triangles making up a rectangle). This should be straightforward, but it's not something I've done before and I must be missing something. I can rotate the texture fine, but translate does not work at all. Do I have a minor implementation issue or am I doing something fundamentally wrong?
 // 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);
 You're incrementing your texture offset by 1.0f ;  but textures coordinates are considered in the range [0, 1] , so you're not actually changing the texture coordinates (assuming you've enabled some sort of wrapping).  
 Try changing that increment (try .01f , or maybe something depending on the framerate) and see if it works.  If not, then it may have something to do with the texture parameters you've got enabled.  
上一篇: 用alpha渲染纹理问题
下一篇: 在OpenGL中通过表面动画纹理
