1. 每个内存占用12M,
2. 使用cocos2dx,测试设备 android 手机。
代码: 整个程序就这个资源。有4张图片2048 * 2048 。
auto node6=spine::SkeletonAnimation::createWithFile("luoli_skill_pkm/luoli_skill.json", "luoli_skill_pkm/luoli_skill.atlas",1.0f);
node6->setPosition(Vec2(500,100));
node6->setAnimation(0, "animation", true);
CCLOG("luoli_skill_pkm %s", Director::getInstance()->getTextureCache()->getCachedTextureInfo().c_str());
this->addChild(node6);
结果:TextureCache dumpDebugInfo: 4 textures, for 49257 KB (48.10 MB)
而同样的png文件转成PVR格式,ios 上只有 6M
3. png就是普通文件,这里上传半天,不上传了。
版本: C:\Program Files\ARM\Mali Developer Tools\Mali Texture Compression Tool v4.2.0 ,
Hi Jin,
首先,明确一个概念,ETC1的压缩比是固定的,
根据ETC1的官方文档:
https://www.khronos.org/registry/gles/extensions/OES/OES_compressed_ETC1_RGB8_texture.txt
4*4共16个texels,压缩后的空间是64bits也就是1个texel占用64/8/16 = 0.5 byte,
如果你的贴图尺寸正确是2048*2048,则etc1(GL_ETC1_RGB8_OES)压缩后的贴图大小应该是
2048*2048*0.5 = 2,097,152 bytes,再加上文件头大小为16 bytes,2,097,168 bytes,
这与我实际测得的结果是一致的。
所以,为了明确问题,在没有资源可以测试的情况下,还需要了解:
1,你压缩后得到的pkm文件大小是?或则,贴图文件你可以尝试使用网盘贡献的方式给我们。
2,你的测试设备是什么,iOS设备?CC2DX的版本是多少?
3,压缩的时候有没有使用"Enable mipmaps"?
4,根据你之前的log“D/cocos2d-x debug info(10423): cocos2d: WARNING: Image is flipped. Regenerate it using PVRTexTool”,pvr的贴图应该没有生效,
后续你测得的结果6M,pvr的贴图是有效的么?
5,鉴于你使用了atlas Sprite,是否有检查过CCSPriteFrameCache,或者你可以将 Director::getInstance()->getTextureCache()中的贴图遍历一遍,将尺寸等信息打印出来,确认贴图是否载入于其中。
BR,
Zephyr
附图为我本地测试的贴图: