【发布时间】:2011-01-31 23:51:23
【问题描述】:
我正在处理将非常大的图片(屏幕尺寸)加载到单个表面的缓冲区。 这个想法是逐帧动画化很多图片(超过视频内存可以存储的)。
我已经创建了一个用于制作缓冲区的代码,但我对位图的加载时间有一个大问题。
我的代码是这样工作的:
我加载了一组本地位图文件路径。
我(认为)我将位图数据预加载到内存中。我正在使用一个线程在 NSArray 中为我的所有图片存储一个 CGImageRef(暂时为 40)
在第二个线程中,代码查看另一个 NSArray 以确定是否为空,如果为空,我通过创建纹理将我的 cgimageRef 绑定到视频内存。 (为此使用共享组) 这个数组存储了20个纹理名称的地址,openGL直接使用它来绘制表面。这个数组是我的(缓冲区)
当我播放动画时,我会从“缓冲区”中删除旧纹理,并且我的线程(在第 3 点处)会加载新纹理。
效果很好,但速度很慢,几秒钟后,动画就没有了。
你能帮我优化我的代码吗?
【问题讨论】:
标签: optimization memory-management opengl-es