关于openGLES渲染的快速交换纹理

时间:2010-11-26 18:58:10

标签: iphone opengl-es

在我的openglES上下文中我想要为一个纹理设置动画,但是这个纹理的数据可能每秒都会改变很多时间(就像视频帧一样,但速度更慢)。 我的想法是在我的3D场景中为一个简单的矩形表面设置动画。

在我看来,实现这一目标的快速技术是在内存中加载一些下一个纹理(通过在其他线程中加载CGImageREF)并在使用它之前在我的纹理上推送数据。

你能想到这个吗?

非常感谢

2 个答案:

答案 0 :(得分:2)

您可以看到此cover flow sample code。它将纹理存储在容器(数组或字典)中,并根据需要检索这些纹理。但要记住这一点,纹理会占据物理记忆。如果纹理是256x256,它将占用256x256x4字节(256KB)。如果存储的纹理太多,很容易收到iOS的内存警告。

答案 1 :(得分:1)

您可能会采用类似于UITableView处理行视图的方法,在该行视图中管理一些可重用纹理的队列。当您需要框架时,将该队列中的下一个纹理出列,将新图像加载到其中并将其添加到已加载纹理的不同队列中,以便在适当的时间显示。换出帧后,再次将队列中先前显示的纹理排入队列,以便稍后重复使用。