我正在使用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,或者可能取决于帧速率)并查看它是否有效.如果没有,那么它可能与您启用的纹理参数有关.
| 归档时间: |
|
| 查看次数: |
3357 次 |
| 最近记录: |