iphone - 在 OpenGL 中对表面上的纹理进行动画处理

标签 iphone opengl-es

我正在使用 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,或者可能取决于帧速率的其他内容)并查看它是否有效。如果不是,则可能与您启用的纹理参数有关。

关于iphone - 在 OpenGL 中对表面上的纹理进行动画处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/904460/

相关文章:

ios - iOS 8 背景的尺寸?

android - HTC Desire 上的 EGLConfig,可用配置挂起设备

iphone - 对于 iPhone 开发人员来说,是否有相当于 D3DXMatrixRotationYawPitchRoll() 的函数?

iPhone:从哪里开始学习 OpenGL ES 进行基本 2D 绘图?

java - glClearColor 无法正常工作(android opengl)

iphone - IOS5 应用程序/未加载网络视频后,如何在第一个视频完成后播放下一个视频

ios - 如何避免 UITableView reloadData 中的竞争条件?

iPhone SDK - TableSearch - 搜索所有单词而不是仅第一个单词

Android、OpenGL ES 2.0、ndk - glCheckFramebufferStatus 返回 GL_FRAMEBUFFER_UNSUPPORTED

iphone - 从 sqlite 数据库存储和检索数据