最近在做通过动态合图来减少 spine 换装drawcall 的功能。遇到一个问题:
在微信小游戏环境下,为了减少内存消耗 CLEANUP_IMAGE_CACHE 宏默认开启,Texture 加载完成后,原始的 image 就会被释放。所以动态合图无法完成。
有两个思路:
- 对于需要动态合图的资源,通过在加载时记录 uuid, 并重写 Texture.prototype._assignImage,达到不释放指定资源图片的目的。
- 选用 RenderTexture 作为最终的图集,并使用FrameBuffer 的方式,将碎图绘制到 RT 上。
现在第一个方案已经实现了,不过对引擎加载管线有hook。
不清楚第二个方案的可行性和性能怎么样, 欢迎大佬讨论
