今日のlibGDX(20150428):画像を表示する

ひらしょー本では苦労してる画像の描画がこんなあっさりできた… すごいなー

今日のlibGDX目次

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

今日のテーマ:画像を表示する

qiita.com

今日も↑を見させて頂き、画像を表示します。

画像ファイルを置く

プロジェクトがあるフォルダの直下にimgフォルダをきって、適当な画像を格納します.

f:id:snoopopo:20150429115320p:plain

eclipse上で実行したときのカレントディレクトリは、 プロジェクトフォルダの位置だ。

これやればすぐわかる.ってわけでメモ.

http://snoopopo.hatenablog.com/entry/2015/04/29/112310

画像を表示する

前回作った com.badlogic.gdx.ApplicationListener を実装した MainListener クラスのメソッドに 画像を表示するためのソースを追記していきます。

まだ短いので全部とりあえず載せる.

・MainListener

package study;
import com.badlogic.gdx.ApplicationListener;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;

public class MainListener implements ApplicationListener{
    Texture texture;
    Texture texture2;
    SpriteBatch batch;

    @Override
    public void create() {
        System.out.println("create");

        batch = new SpriteBatch();
        //画像ファイル
        texture = new Texture("img\\snoopopo-.png");
        texture2 = new Texture("img\\kinchan_left.gif");
    }

    @Override
    public void resize(int w, int h) {
        System.out.println("resize"+w+","+h);
    }

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

        batch.begin();
        batch.draw(texture, 150, 200);
        batch.draw(texture2, 100, 150);
        batch.end();
    }

    @Override
    public void pause() {
        System.out.println("pause");
    }

    @Override
    public void resume() {
        System.out.println("resume");
    }

    @Override
    public void dispose() {
        System.out.println("dispose");
    }
}

画像の読み込み

com.badlogic.gdx.graphics.Texture クラスのインスタンス生成時に画像ファイル名を渡すだけで読み込んでくれる.

    @Override
    public void create() {
        System.out.println("create");

        batch = new SpriteBatch();
        //画像ファイル
        texture = new Texture("img\\snoopopo-.png");
        texture2 = new Texture("img\\kinchan_left.gif");
    }

pnggifでもいけますね.

表示している部分

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

        batch.begin();
        batch.draw(texture, 150, 200);
        batch.draw(texture2, 100, 150);
        batch.end();
    }

com.badlogic.gdx.graphics.g2d.SpriteBatch クラスのbegin()メソッドからend()メソッドの間に書くのがお約束みたいだ.

libGDXは左下が(0,0) らしい.

画像を重なった場合は後に描画されたものが上になっている.

下の例で言うと、texture2 変数が保持しているkinchan_left.gif という画像が手前に表示されています。

f:id:snoopopo:20150429115322p:plain