【libGDX入門】TextureAtlasを使う【TexturePacker】
TextureAtlasの生成方法とlibGDXでの読み込み方法について紹介します。 テクスチャアトラス(TextureAtlas)とは複数の画像をひとつに結合し、読み込み時間や描画の効率化を行うための仕組みです。
TexturePackerを使ってTextureAtlasを作る
まず、複数の画像からTextureAtlasを作り出すためのツールであるTexturePackerを以下のリンクからダウンロードしてインストールします。
起動時にデータ形式について聞かれるので、libGDXを選択。
まず右のメニューから、Trim modeをNoneに設定。
その後、アトラス化したい画像を真ん中にドラッグアンドドロップして追加。
終わったら上のメニューから、Publish sprite sheetをクリックして、出力先のフォルダを決定する。
以下の画像が今回アトラス化した画像二枚です。
left.png
right.png
そして出力されたアトラスが以下になります。
atlas.png
atlas
atlas.png format: RGBA8888 filter: Linear,Linear repeat: none left rotate: false xy: 2, 2 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1 right rotate: false xy: 132, 2 size: 128, 128 orig: 128, 128 offset: 0, 0 index: -1
TextureAtlasからテクスチャの一部を読み込む
作ったアトラスはテキストファイルと画像ファイル両方ともAndroid/assetsフォルダにいれておきます。
アトラスの読み込みは簡単です。 TextureAtlasクラスにファイルパスを与えれば完了。
public class MyGdxGame extends ApplicationAdapter { private SpriteBatch batch; TextureAtlas atlas; TextureRegion left; TextureRegion right; public void create () { batch = new SpriteBatch(); atlas = new TextureAtlas(Gdx.files.internal("atlas")); left = atlas.findRegion("left"); right = atlas.findRegion("right"); } public void render () { Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); Gdx.gl.glClearColor(1,1,1,1); batch.begin(); batch.draw(left, 100, 100); batch.draw(right, 100, 300); batch.end(); } public void dispose(){ atlas.dispose(); } }
findRegionでアトラス化した画像をTextureRegion形式で取得できます。 この際、pngなどのファイル形式は省略します。
あとは普通に使えます。 使い終わったらdisposeしてメモリ解放します。
実行結果