2

我正在使用 iPhone OpenGLES 实现,我希望在一个简单的表面(两个三角形组成一个矩形)上无休止地滚动纹理。这应该很简单,但这不是我以前做过的事情,而且我一定遗漏了一些东西。我可以很好地旋转纹理,但翻译根本不起作用。我有一个小的实现问题还是我做的事情根本上是错误的?

// 移动纹理
 glMatrixMode(GL_TEXTURE);
 glPushMatrix();
 glLoadIdentity();

    // 增加偏移量 - 出于演示目的不重置
 wallOffset += 1.0;

    // 移动纹理 - 这不起作用
 glTranslatef(wallOffset,wallOffset,0.0);

    // 旋转纹理 - 这确实有效
 //glRotatef(wallOffset, 1.0, 0.0, 0.0);

 glMatrixMode(GL_MODELVIEW);

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

 // 简单的绘图代码
 glNormalPointer(GL_FLOAT, 0, 法线);
 glVertexPointer(3, GL_FLOAT, 0, 顶点);
 glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);

    // 推回矩阵
 glMatrixMode(GL_TEXTURE);
 glPopMatrix();
 glMatrixMode(GL_MODELVIEW);
4

1 回答 1

8

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

尝试更改该增量(尝试.01f,或者可能取决于帧速率)并查看它是否有效。如果不是,那么它可能与您启用的纹理参数有关。

于 2009-05-24T19:43:23.043 回答