我现在在做的事情是将一个项目从iOS移植到android,遇到的问题是资源太大,包括文件本身和占用内存。
在查找一些资料和询问一些朋友之后,把解决问题的方向方在ect1这种纹理压缩格式上。
原因是这种格式是OpenGL ES 2.0支持的,几乎所有的Android机器都支持。
我用的工具是Mali Texture Compression Tool v4.0.1,刚开始就遇到一个问题,就是生成的ktx文件大小跟预想的有差距。
原始的资源文件是png-24。
我观察过几个文件。最好的生成的文件大小是原始png文件大小的一半;但是有些竟然变大了。而且我对整个资源进行压缩后总的结果竟然也是变大...
按照我现在了解的情况,ktx一个像素只用0.5个byte表示的话,压缩后的文件大小应该跟png-8的文件大小差不多吧。
我使用的是命令行的压缩方式,命令是:
etcpack.exe input_filename out_directory -s fast -e perceptual -c etc1 -ktx
不知道是不是参数有什么问题?
还是这个工具本身就不能达到一定的压缩比?
问题的原因我大概已经清楚了。
png是一种经过文件压缩的图片格式,而ktx只是进行了纹理压缩,而没有进行文件压缩,所以在某些情况下ktx文件是会比原png(压缩比很高)要大。
如果我们分别用压缩工具再对png和ktx文件分别压缩,可以发现png文件不会变小多少,而ktx文件则会有一个明显的减小。
再次谢谢各位的关注!
有什么工具,可以对ktx图片格式进行压缩,减少硬盘的的占用吗