This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

android 图片资源etc1 格式内存问题

android 图片资源etc1 格式内存问题  
使用mali工具转成etc1格式后,2048*2048图片占用内存12M,太大了不能接受
大师们怎么解决的?
Parents
  • 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

Reply
  • 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

Children
No data