今日のlibGDX(20150502):テクスチャアトラスを使った描画

今日のlibGDX目次

http://snoopopo.hatenablog.com/entry/2015/04/27/220545

今日のテーマ:テクスチャアトラスを使った描画

qiita.com

テクスチャアトラス。これは聞いた事ない言葉。

TexturePackerをインストール

テクスチャアトラスファイルをまず作る為のツールを準備します.

上記の記事でTexturePackerをご紹介頂いているので、ダウンロードしてみます.

ファイル名は TexturePacker-3.7.1-x64.msi というインストーラみたいです.

テクスチャアトラスファイルを作る

バージョンの違いだと思うけど、上記のURLと少しUIが変わっていたのでキャプチャしておきます.

f:id:snoopopo:20150502130731p:plain

f:id:snoopopo:20150502130750p:plain

できたファイル↓

f:id:snoopopo:20150502131105p:plain

あ~なるほど,複数画像をひとつの画像にして、切り替えて使うみたいな…キャラチップみたいなことか,

画像を描画

・読み込む部分

    @Override
    public void create() {
        batch = new SpriteBatch();
        //テクスチャアトラス読み込み
        FileHandle handle = Gdx.files.internal("img\\textureAtlasSample.txt");
        atlas = new TextureAtlas(handle);
    }

ここで生成したテキストファイルを指定する.

・描画してる部分

    @Override
    public void render() {
        Gdx.gl.glClearColor(0, 0, 0.2f, 1);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

        batch.begin();
        TextureAtlas.AtlasRegion region = atlas.findRegion("CC_M_aruka1");
        batch.draw(region, 0, 0);
        TextureAtlas.AtlasRegion region2 = atlas.findRegion("CC_M_charolin1");
        batch.draw(region2, 0, 200);
        TextureAtlas.AtlasRegion region3 = atlas.findRegion("CC_M_edword1");
        batch.draw(region3, 100, 0);
        TextureAtlas.AtlasRegion region4 = atlas.findRegion("CC_M_telesa1");
        batch.draw(region4, 100, 200);
        batch.end();
    }

生成されたテキストファイルを見ると、テクスチャアトラスファイル(pngファイル)名と、それぞれのチップ毎の名前(テクスチャアトラスファイルを作ったときに使った画像名と同じだけど)とか位置とかが書いてある. そのチップ毎の名前を引数で指定してあげればいいみたい.

        TextureAtlas.AtlasRegion region = atlas.findRegion("CC_M_aruka1");

あとは描画する位置を指定してあげるだけだ.

なんかあんまり見たことない文法だなーと思ったけど, AtrlasRegionクラスはTextureAtlasクラスの内部クラスだ.

というわけでこんな感じに描画出来ました.

f:id:snoopopo:20150502130738p:plain