iOS_31_cocos2d_纹理打包(TexturePacker)

TexturePacker工具专用用来对多张图片进行打包成一张大图片

其目的是:1.节约内存空间,2.减少纹理渲染的次数

因为Android和iOS的游戏,都是通过OpenGL ES进行渲染,

OpenGL ES要求纹理的尺寸必须为2的n次方,

如果不是,则会扩大至最近的2的n次方的尺寸(通过填充透明像素)

最重要的是:纹理渲染非常消耗性能,

如果每于每一张小图片,分别进行渲染,则都要经过三个步骤:

准备渲染、开始渲染、结束渲染

但是,如果用TP将,所有小图片,合成一张大图片,

则只需渲染一次(即只需对大图片进行:准备渲染、开始渲染、结束渲染)

这将大大提升性能

举例说明,有一张260x260像素的32位色图,

它在内存中大概占270KB(260 x 260 x 32 / 8 = 270400B),

但受纹理尺寸的限制,纹理的尺寸必须是2的n次幂,

系统将自动生成一张最接近原图尺寸的(只会比原图尺寸大)、宽高都为2的n次幂的纹理,

因此,系统将会生成一张512x512像素的纹理,

并且,最终会占用1MB的内存(512 x 512 x 32 / 8 = 1048576B),

可以看出,实际占用的内存竟然是原图所需内存的4倍。

解决办法就是将这张260x260像素的图像改为256x256像素,系统也将生成256x256像素的纹理。

它合成后的大图片,支持以下多种框架

它由一位叫做Andreas Loew的老外开发。下面是他的推特帐号、脸谱帐号

下载下来,如图所示:

打开应用,界面如下:

一、点击Add Folder(打开一个包含n多图片的folder)

二、将包含赵云所有图片的文件夹选中

三、设置各项参数,此时,界面如下:

下面是相关的参数设置:

data Format选项,支持的格式有:

Data Filename:生成的目标文件名

Texture Format:

Image Format:

推荐:RGBA4444,即RGBA分别用4位表示

Dithering【犹豫不决】抖动处理???

选择:FloydSteinberg???

当Algorithm为MaxRects时:

当Algorithm为Basic时:

当Allow Rotation为NO时:

四、点击 发布【Publish】,会生成一个大png和一个plist文件

注意:Save是保存TP工程,生成TPS文件

Plist文件内容如下:

字典:键是图片名,如1.png

值是一个字典,键有:frame、offset、rotated、sourceSize、sourceColorRect

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
        <key>frames</key>
        <dict>
            <key>1.png</key>
            <dict>
                <key>frame</key>
                <string>{{2,416},{92,107}}</string>
                <key>offset</key>
                <string>{-29,-26}</string>
                <key>rotated</key>
                <true/>
                <key>sourceColorRect</key>
                <string>{{91,56},{92,107}}</string>
                <key>sourceSize</key>
                <string>{332,167}</string>
            </dict>
            <key>10.png</key>
            <dict>
                <key>frame</key>
                <string>{{111,414},{184,81}}</string>
                <key>offset</key>
                <string>{-3,-29}</string>
                <key>rotated</key>
                <false/>
                <key>sourceColorRect</key>
                <string>{{71,72},{184,81}}</string>
                <key>sourceSize</key>
                <string>{332,167}</string>
            </dict>
            <key>2.png</key>
            <dict>
                <key>frame</key>
                <string>{{2,224},{190,81}}</string>
                <key>offset</key>
                <string>{-71,-29}</string>
                <key>rotated</key>
                <true/>
                <key>sourceColorRect</key>
                <string>{{0,72},{190,81}}</string>
                <key>sourceSize</key>
                <string>{332,167}</string>
            </dict>
            <key>3.png</key>
            <dict>
                <key>frame</key>
                <string>{{297,337},{136,127}}</string>
                <key>offset</key>
                <string>{-46,-6}</string>
                <key>rotated</key>
                <true/>
                <key>sourceColorRect</key>
                <string>{{52,26},{136,127}}</string>
                <key>sourceSize</key>
                <string>{332,167}</string>
            </dict>
            <key>4.png</key>
            <dict>
                <key>frame</key>
                <string>{{297,182},{158,153}}</string>
                <key>offset</key>
                <string>{-59,7}</string>
                <key>rotated</key>
                <false/>
                <key>sourceColorRect</key>
                <string>{{28,0},{158,153}}</string>
                <key>sourceSize</key>
                <string>{332,167}</string>
            </dict>
            <key>5.png</key>
            <dict>
                <key>frame</key>
                <string>{{85,224},{188,149}}</string>
                <key>offset</key>
                <string>{-12,5}</string>
                <key>rotated</key>
                <true/>
                <key>sourceColorRect</key>
                <string>{{60,4},{188,149}}</string>
                <key>sourceSize</key>
                <string>{332,167}</string>
            </dict>
            <key>6.png</key>
            <dict>
                <key>frame</key>
                <string>{{2,2},{242,143}}</string>
                <key>offset</key>
                <string>{45,2}</string>
                <key>rotated</key>
                <false/>
                <key>sourceColorRect</key>
                <string>{{90,10},{242,143}}</string>
                <key>sourceSize</key>
                <string>{332,167}</string>
            </dict>
            <key>7.png</key>
            <dict>
                <key>frame</key>
                <string>{{246,2},{242,119}}</string>
                <key>offset</key>
                <string>{45,-10}</string>
                <key>rotated</key>
                <false/>
                <key>sourceColorRect</key>
                <string>{{90,34},{242,119}}</string>
                <key>sourceSize</key>
                <string>{332,167}</string>
            </dict>
            <key>8.png</key>
            <dict>
                <key>frame</key>
                <string>{{246,123},{232,57}}</string>
                <key>offset</key>
                <string>{40,-41}</string>
                <key>rotated</key>
                <false/>
                <key>sourceColorRect</key>
                <string>{{90,96},{232,57}}</string>
                <key>sourceSize</key>
                <string>{332,167}</string>
            </dict>
            <key>9.png</key>
            <dict>
                <key>frame</key>
                <string>{{2,147},{198,75}}</string>
                <key>offset</key>
                <string>{24,-32}</string>
                <key>rotated</key>
                <false/>
                <key>sourceColorRect</key>
                <string>{{91,78},{198,75}}</string>
                <key>sourceSize</key>
                <string>{332,167}</string>
            </dict>
        </dict>
        <key>metadata</key>
        <dict>
            <key>format</key>
            <integer>2</integer>
            <key>realTextureFileName</key>
            <string>zhaoyun.png</string>
            <key>size</key>
            <string>{512,512}</string>
            <key>smartupdate</key>
            <string>$TexturePacker:SmartUpdate:aae1cbd56ecaac00aa0364cad5d7b3d2:1/1$</string>
            <key>textureFileName</key>
            <string>zhaoyun.png</string>
        </dict>
    </dict>
</plist>

最终合成的图片:

Plist文件一览:

时间: 2024-08-30 16:28:07

iOS_31_cocos2d_纹理打包(TexturePacker)的相关文章

libgdx 图片打包 TexturePacker

---恢复内容开始--- 在OpenGL中,绘制图像需要绑定纹理,绑定纹理的代价很高消耗很大. 试想,有1000张不同的小图片需要绘制,就需要绑定1000次. 把这1000张小图,打包成一张大图,绑定时一次就够了.参照SQL批处理来理解吧. 当然实际情况怎么打包,每关打一个包,UI打一个包等等这些我们不讨论. 文档地址:https://github.com/libgdx/libgdx/wiki/Texture-packer libgdx内置了打包工具,命令是: // OS X / Linux j

TexturePacker批处理python

TexturePacker版本 4.2.1 前言:因为水平有限,错误再所难免,望指正 1.安装TexturePacker Command Line Tool 1.1 Mac下安装 TexturePacker => Install Command Line Tool => Install 1.2 win下安装 必须配置环境变量. 2.TexturePacker命令说明(主要命令) 2.1 --texture-format --texture-format <id> Sets the

cocos2d-x 图片纹理优化 资源加载方案

原文地址:http://blog.sina.com.cn/s/blog_64d591e80101me1y.html 文章主要解决了我一直以来疑惑的几个问题 1.到底用不用2的N次幂的图片 2.为什么加载资源的时候,内存会突然飙高 3.内存突然飙高的解决方案 4.如何解决程序在加载资源卡的问题 首先是cocos2d-x官网上的优化建议 一帧一帧载入游戏资源 减少绘制调用,使用"Use CCSpriteBatchNode" 载入纹理时按照从大到小的顺序 避免高峰内存使用 使用载入屏幕预载入

Cocos数据篇[3.4](4) ——plist文件操作

[唠叨] 在Cocos中,plist文件 是非常常见的配置文件.它是特定格式的xml文件. 例如:小图打包成大图的纹理图片.制作粒子特效.帧动画等,都用到了plist文件作为配置文件. 本节要介绍的是:如何创建plist文件,以及读取plist文件中的数据信息. [扩展阅读] http://zh.wikipedia.org/wiki/Plist (维基百科) http://zengrong.net/post/1981.htm (COCOS2D-X中的PLIST文件格式详解) http://cn.

【v2.x OGE教程 11】 动画编辑器帮助文档

[v2.x OGE教程 11] 动画编辑器帮助文档 版本号 日期 作者 说明 1.0 2014-9-3 橙子游戏 文档创建       一.简单介绍 动画编辑器用于游戏动画的可视化编辑,支持序列帧动画和关键帧动画.通过解析生成的数据文件就可以获取动画信息,并能随时调整,以降低开发工作量.提高开发效率. 二.相关概念 1. 帧 帧是动画在某个时间点的状态.一系列的帧组成了动画的时间线.动画播放时.通过帧的切换,实现动画效果 2. 序列帧 序列帧组成序列帧动画,这样的动画中.仅通过静态图片的切换来实

plist文件操作

Cocos2d-x数据篇04:plist文件操作 [前言] 在Cocos2d-x中,plist文件 是非常常见的配置文件.它是特定格式的xml文件. 例如:小图打包成大图的纹理图片.制作粒子特效.帧动画等,都用到了plist文件作为配置文件. 本节要介绍的是:如何创建plist文件,以及读取plist文件中的数据信息. [plist文件] 属性列表(Property List)文件是一种用来存储序列化后的对象的文件. 属性列表文件的文件扩展名为 .plist,因此通常被称为plist文件. 1.

图片动画精灵制作工具Texture Packer的使用

TexturePacker是一个图片纹理打包工具,可以将很多张图片,合并成一张.主要的应用场景就是css图片精灵,还有游戏中的动画精灵.对前端开发工程师和游戏工程师都是很不错的工具. TexturePacker的特点有: a.  制作css图片精灵的时候自动生成css,制作游戏动画精灵的时候可以根据不同的游戏引擎,生成相应的描述文件,如json,可以用于游戏开发中. b. 自动放置精灵图片,使用起来非常方便. c. 减少网络请求,节约用户内存.减少内存是因为手机中渲染是使用的openGL ES就

Cocos2d-x数据篇04:plist文件操作

尊重原创:http://cn.cocos2d-x.org/tutorial/show?id=2424 [前言] 在Cocos2d-x中,plist文件 是非常常见的配置文件.它是特定格式的xml文件. 例如:小图打包成大图的纹理图片.制作粒子特效.帧动画等,都用到了plist文件作为配置文件. 本节要介绍的是:如何创建plist文件,以及读取plist文件中的数据信息. [plist文件] 属性列表(Property List)文件是一种用来存储序列化后的对象的文件. 属性列表文件的文件扩展名为

cocos图片的选择以及压缩

我们在使用cocos在windows平台下,运行速度很快很流畅,很强大,可是当我们打包成apk文件,在手机上运行的时候,流畅度很可能降低,甚至还有间歇性内存彪高. 游戏内存优化我们一般可以从这么3个方面入手:引擎自身提供的优化选项,引擎底层框架,语言上层(内存泄漏).事实上,代码运行占用的内存是很低的,图片等资源的加载和使用占80%你所使用的的内存资源.在这里我们着重分析一下如何由图片减少内存的使用. 首先,图片的格式!各个类型(png8,png32,jpg......)我们区分一下.jpg最大