AndEngine TexturePacker的使用

      我们都知道OpenGL 1载入纹理图片的时候,内存都是会自动扩张到2的n次方,如素材资源是64*65px的话,将会按照64*128的规格载入图片,将会浪费掉一部分的空间。因此,如果图片数量过多的话,这个浪费掉的数量是非常之多的,另外一方面就是I/O的操作也会非常的频繁,导致效率低下。而TexturePacker工具则帮我们解决了这方面的问题。

  •       下载安装

      官方网站:http://www.codeandweb.com/texturepacker

      分免费版和收费版两个版本,免费版基本能满足常用的功能。

      安装的话,按照步骤一步一步往下就是了,没什么需要注意的地方

  •       软件使用

      安装好软件后打开TexturePackerGui,软件大致分为三个区最左边为参数配置区,中间为预览区,最右边为图片素材区。点击Add Sprite或Add Folder按钮或者直接拖拽图片进去即可添加图片素材。

image

      左边的设置区域中,常用的设置仅仅是Output相关设置。

image

      Andengine GLES1是基于OpenGl 1绘制图片的,软件经默认帮我们把2的幂次方选项选上了,如果是GLES2的话,貌似可以不用。

image

      另外,根据各自需要,选择是否要切除原图空白处以节省空间。

image

     

  •       使用示例

      以上配置完毕之后,点击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);

 

 

 
posted @ 2013-04-25 15:07  路人 乙  阅读(987)  评论(0编辑  收藏  举报