spine性能优化篇
来源:互联网 发布:网络存储一体机系统 编辑:程序博客网 时间:2024/06/15 20:07
Spine是一款优秀的2D骨骼动画软件,提供了几乎包含目前所有主流游戏引擎和编程语言的运行库。
本人使用cocos2d引擎开发移动游戏,鉴于Spine强大的功能和良好的UI,选择其实现骨骼动画。
具体使用过程中,发现如下两个需求:
1. Spine的绘制效率不高,每次增加一个Spine动画,会增加1个Draw call。
2. Spine文件读取效率不高,特别是大文件的动画,在低端机上,每次加载会卡顿。
解决方法如下:
1. 减少Draw Call。具体做法是增加Spine纹理的Batch。cocos2d-x自带的spine版本太低,不带batch功能。spine官方库2.0版本之后,已经实现batch功能。直接更新库即可,不再多述。
2. 提高读取效率。具体做法是增加文件缓存。第一次初始化时,从硬盘读取文件的数据,并加入到缓存池中;之后的每次初始化,直接调用缓存池中缓存,缓存的引用计数加一;析构时,不会自动释放缓存,缓存的引用计数减一。缓存池中的缓存,需要手动释放。
具体分为纹理缓存和数据缓存。
纹理缓存。Spine纹理的管理,直接调用cocos2d的TextureCache。spine初始化时会时,若纹理缓存池中没有图片,会加载图片;若存在,则直接使用纹理,引用计数加1。spine析构时,若纹理的引用计数为0,则从纹理缓存池中释放图片,否则引用计数减1。按我们的需求,在spine析构时不自动释放纹理,而是纳入我们的缓存管理机制。
文件缓存。在spine初始化时,会从硬盘读取文件数据。在析构时,将文件数据删除。每个spine单独拥有一份文件数据。按我们的需求,我们希望不同spine可以共用一份数据,并纳入我们的缓存管理机制。
以上为原创文章,如转载请表明出处@yangli.network@gmail.com
- spine性能优化篇
- 【Unity3D游戏开发】性能优化之spine提高80~90%的效率 (三一)
- spine
- 性能优化篇
- 性能优化篇
- 性能优化篇
- mysql 性能优化篇
- Java性能优化篇
- mysql性能优化篇
- 性能优化-WEB篇
- Java性能优化篇
- 性能优化_JS篇
- Unity3d 性能优化篇
- 性能优化-转载篇
- python 性能优化篇
- 性能优化--缓存篇
- 性能优化--缓存篇
- 【JavaScript】性能优化篇
- json dumps方法 与 loads方法比较
- CSU 1120 病毒
- AngularJs下拉搜索框
- linux 不同用户间文件复制
- Uva11762 Race to 1
- spine性能优化篇
- 冒泡排序+增强版for循环输出
- 浅谈Java转义符\\|
- uibutton 取消点击效果 btton.adjustsImageWhenHighlighted = NO;
- TensorFlow高效读取数据的方法
- Mac上如何完美的转换epub至mobi供kindle观看
- 网易面试(C++基础)
- Arm汇编学习笔记(七)——ARM9五级流水及流水线互锁
- 【Android】开启前后相机用OpenCV进行实时人脸检测