0

在我的应用程序中,我使用了很多 UIView 动画(动画 png)。是否有一个简单而优雅的解决方案将所有这些 UIView 图像动画从 CPU 处理到 GPU?这很值得?

4

1 回答 1

0

动画 PNG 序列已经由 GPU 绘制(实际图像加载和转换为 OpenGL 纹理由 CPU 完成,但绘制图像由 GPU 完成)。

如果您遇到性能问题,瓶颈可能在于图像的加载或解压缩,在这种情况下,有一些选项,例如将它们组合成单个 spritesheet,然后通过将图像分配为 view.layer 来为它们设置动画.contents 并移动 view.layer.contentsRect 以使用 CAKeyframeAnimation 依次选择每个帧。

或者,我编写了一个库,它可以使用 UIView 子类实时加载和播放 PVRTC 图像序列,该子类反映了 UIImageView API,但使用 OpenGL 进行所有绘图。这比使用 PNG 对 CPU 和内存更友好,并且可以解决您的性能问题(假设您确实有任何问题)。

看看:https ://github.com/nicklockwood/GLView

(示例文件夹中包含一个平滑播放大型 PVR 图像序列的示例,以及将 PNG 图像批量转换为 PVR 的说明)。

于 2013-05-13T09:41:44.943 回答