我们都知道OpenGL 1载入纹理图片的时候,内存都是会自动扩张到2的n次方,如素材资源是64*65px的话,将会按照64*128的规格载入图片,将会浪费掉一部分的空间。因此,如果图片数量过多的话,这个浪费掉的数量是非常之多的,另外一方面就是I/O的操作也会非常的频繁,导致效率低下。而TexturePacker工具则帮我们解决了这方面的问题。
- 下载安装
官方网站:http://www.codeandweb.com/texturepacker
分免费版和收费版两个版本,免费版基本能满足常用的功能。
安装的话,按照步骤一步一步往下就是了,没什么需要注意的地方
- 软件使用
安装好软件后打开TexturePackerGui,软件大致分为三个区最左边为参数配置区,中间为预览区,最右边为图片素材区。点击Add Sprite或Add Folder按钮或者直接拖拽图片进去即可添加图片素材。
左边的设置区域中,常用的设置仅仅是Output相关设置。
Andengine GLES1是基于OpenGl 1绘制图片的,软件经默认帮我们把2的幂次方选项选上了,如果是GLES2的话,貌似可以不用。
另外,根据各自需要,选择是否要切除原图空白处以节省空间。
- 使用示例
以上配置完毕之后,点击Publish即可生成相应的xml配置文件、合并的贴图文件以及对应的java id文件。下面来看如何使用这个生成好的SpriteSheet。
引入命名空间:
import org.andengine.util.texturepack.TexturePack; import org.andengine.util.texturepack.TexturePackLoader; import org.andengine.util.texturepack.TexturePackTextureRegionLibrary; import org.andengine.util.texturepack.exception.TexturePackParseException;
首先,创建TexturePacker实例对象并加载:
TexturePack spriteTexturePack = new TexturePackLoader(mActivity.getAssets(), mActivity.getTextureManager()).loadFromAsset("xml文件在Assets中的文件路径,如:spitesheets/menu.xml", "合并的贴图文件在Assets中的目录路径,如spitesheets/");
spriteTexturePack.loadTexture();
注意,查看xml文件,可以发现xml文件中已经包含了合并后贴图文件的文件名,故loadFromAsset的第二个参数仅需目录路径即可。
然后,通过TexturePacker创建TexturePackTextureRegionLibrary对象:
TexturePackTextureRegionLibrary libraty = spriteTexturePack.getTexturePackTextureRegionLibrary();
最后,通过TexturePackTextureRegionLibrary对象即可通过生成的java文件中的id获取到对应的TexturePackTextureRegion,如:
TextureRegion textureRegion = libraty.get(Menu.MENU_MAP_WORLD_ID);
转载于:https://www.cnblogs.com/kylin17/archive/2013/04/25/3042575.html