澄清一下,我知道纹理图集在使用多个不同图像时可以提高性能。但我感兴趣的是,当你不这样做时,事情是如何完成的。
我尝试在自定义 OpenGL 中手动制作一些逐帧动画,其中每一帧我绑定一个新纹理并将其绘制在同一个点精灵上。UIImageView
它可以工作,但与抽象相同的能力相比,它非常慢。我预先加载了所有纹理,但每帧都会重新绑定。相比之下,UIImageView
接受单独的图像,而不是纹理图集,所以我想它会做类似的事情。
这些是单独加载的 76 张图像,而不是作为纹理图集,每个大约 200 像素正方形。在 OpenGL 中,我怀疑瓶颈是需要在每一帧重新绑定纹理。但是如何UIImageView
做到这一点,因为我期望有类似的瓶颈?是否UIImageView
以某种方式在幕后创建地图集,因此不需要重新绑定纹理?由于 UIKit 最终会在其下运行 OpenGL,我很好奇它是如何工作的。
如果有一种更有效的方法来为多个纹理设置动画,而不是在 OpenGL 中每帧换出不同的绑定纹理,我想知道,因为它可能暗示 Apple 在他们的框架中正在做什么。
如果我确实在一秒钟内为 60 帧中的每一帧获得了一个新帧,那么在我的 76 帧中制作动画大约需要 1.25 秒。事实上,我使用 UIImageView 得到了这一点,但 OpenGL 大约需要 3 - 4 秒。