我正在使用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);
答案 0 :(得分:8)
您将纹理偏移量增加1.0f
;但是纹理坐标在[0, 1]
范围内被考虑,所以你实际上并没有改变纹理坐标(假设你已经启用了某种包装)。
尝试更改该增量(尝试.01f
,或者根据帧速率确定某些内容),看看它是否有效。如果没有,那么它可能与您启用的纹理参数有关。