在OpenGL中通过表面动画纹理

我正在使用iPhone OpenGLES实现,并且希望在一个简单的表面(两个构成矩形的三角形)上无限滚动纹理。 这应该是直截了当的,但这不是我以前做过的事情,我必须错过一些东西。 我可以很好地旋转纹理,但翻译根本不起作用。 我有一个小的执行问题,或者我正在做一些根本错误的事情吗?

 // 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);

你正在增加你的纹理偏移1.0f ; 但纹理坐标被认为是在[0, 1]范围内,所以你实际上并没有改变纹理坐标(假设你已经启用了某种包装)。

尝试更改增量(尝试.01f ,或者取决于帧率),看看它是否工作。 如果没有,那么它可能与你启用的纹理参数有关。

链接地址: http://www.djcxy.com/p/5803.html

上一篇: Animating a texture across a surface in OpenGL

下一篇: OpenGL ES Render to Texture