首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iPad视网膜的SkTextureAtlas动画?

iPad视网膜的SkTextureAtlas动画?
EN

Stack Overflow用户
提问于 2016-01-19 03:29:57
回答 1查看 99关注 0票数 1

我需要一个像iPad视网膜屏幕一样大的动画,2048x1536,但是这个大小超过了最大尺寸,有没有其他方法可以制作这么大的动画?我已经尝试使用一些SKTextureAtlas和SKActions来实现相同的结果,但出于性能原因,我想切换到sprites

EN

回答 1

Stack Overflow用户

发布于 2016-01-19 23:09:56

让我们忘记你不能使用大图像的事实,并假设你使用小一点的图像(例如。2000x1500,这将会工作)。这样做的缺点是什么?

内存消耗

大小为2000x1500的图像在存储到磁盘时可能只占用20KB甚至更少的空间,但当将相同的图像加载到内存中时,这与实际的内存消耗无关。要计算标准RGBA8888镜像所需的内存,您可以使用以下命令:

代码语言:javascript
复制
width x height x bytes per pixel = size in memory

RGBA8888格式对每个像素使用4个字节(每个红色、绿色、蓝色和alpha通道使用1个字节),如果您计算一下,您将看到每个2048x1536图像将需要大约12 12的内存。显然是因为memory is not unlimited resource,很容易就会遇到内存问题。

批渲染和绘制调用

另外,更重要的是,将这些大图放入地图集并没有真正的好处,如果有必要,SpriteKit会拆分地图集。例如,在具有十个2000x1500图像的情况下,SpriteKit会将一个atlas纹理拆分为十个atlas纹理。当渲染时,这将需要10次绘制调用,并且使用地图集的整个目的都被击败了。

解决方案

如果你真的需要大的动画,使用视频代替图像。这是苹果在SKVideoNode部分推荐的:

像任何其他节点一样,您可以将影片节点放在节点树内的任何位置,精灵工具包将正确地渲染它。例如,您可以使用视频节点来设置某些视觉行为的动画,而使用纹理集合来定义这些行为的代价会很高。

或者你可以尝试用一种不同的方式来制作动画。从动画中删除静态部分,并对真正需要动画的部分进行动画处理。你也可以试着把一个动画分成几个部分。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34862567

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档