본문 바로가기

프로그래밍/libGDX 엔진

libGDX #3 이미지아틀라스 생성하기

이전 글에서 스크린 클래스를 생성하였습니다. SplashScreen도 생성하였으나 Show() 부분은 아직 비어있습니다. 이제 여기에서 로딩화면에 띄워줄 이미지를 불러와 보여주는 코드만 넣어주면 됩니다. 그러기 위해서는 이미지를 불러와야하는데, 이미지를 부르기전에 png,jpg 파일등을 텍스쳐로 바꾸는 작업을 해야합니다. 그리고 그전에 image atlas 를 적용하여야합니다. libgdx는 image atlas를 쉽게 만들 수 있도록 TexturePacker2 라는것을 제공해줍니다. 2가 붙은 이유는 TexturePacker를 쓰다가 새로 리팩토링하면서 2가 붙은거 같네요. TexturePacker2를 사용하기 위해서는 아래와 같이 이전에 다운받은 libgdx 라이브러리 폴더에서 extension에 들어가 tools 관련 폴더에 들어가면 gdx-tools.jar가 있습니다. 이걸 lib폴더에 넣고 빌드라이브러리에 등록하면 됩니다.

TexturePacker2의 사용법은 간단합니다. 아래와 같이 TextureUtil.java를 만들어 이미지 input 경로와 output 경로를 지정해주면 됩니다. 

package com.dpug.puggame.uitls;

import com.badlogic.gdx.tools.imagepacker.TexturePacker2;

public class TextureUtils {

	public static void main(String[] args) {

		TexturePacker2.process("../pug-game-images",
				"../pug-game-android/assets/textures", "textures");
	}
}

TexturePacker2.process의 인자는 input 경로,  output경로, output파일명 입니다. 경로는 상대 경로로써 pug-game 폴더가 기본값으로 잡혀있다고 보면됩니다. 절대 경로로 입력해도되나 추천하지 않습니다. 저는 이미지를 pug-game-images라고 따로 폴더를 만들어서 관리합니다. 나중에 배포할때 이녀석들은 어차피 사용하지 않습니다. TexturePacker를 통해 imageAtlas로 나온 텍스쳐만 사용하기 때문입니다. 위와 같이 만들고 실행시키면 경로가 정상적이라면 아래와 같이 texture가 생성됩니다. 이 때, input 으로 넣는 이미지는 가로 세로 사이즈가 2의 배수 단위가 되도록 넣어야합니다.

위와 같이 텍스쳐가 정상적으로 생성되었으면, 파일을 열어보면 알아서 여백의 공간을 채워서 만들어 놓았군요. 제가 텍스쳐로 사용한 파일은 아래의 이미지입니다.

2의 배수를 맞추기위해 512x512 사이즈로 맞춘것입니다. 다음에는 강아지들 사진을 스플래쉬스크린에 띄워보도록 해보겠습니다.