#sprite (1)

- 이건 제가 LibGDX Game Development Essentials 라는 책을 보면서 정리한 내용으로 제가 정확히 이해하지 못한 부분에 대해서는 여러분들이 알고있는 것과 차이가 있을 수 있음을 말씀드리며, 혹여나 제가 잘못 이해한 부분이 있으면 댓글로 저에게 지식을 좀 나누어 주시면 감사하겠습니다. ^-^



오늘은 Displaying graphics에 대해서 포스팅을 하려합니다.

일 단 Texture가 뭔지에 대해서 이해를 해야할 것 같네요. Texture란 GPU로 이미지가 전달되는 단위(?)라고 생각하시면 됩니다. 그런데 이게 expensive process라서 좀 더 효율적으로 그리기 위한 도구가 필요했는데 그래서 나온것이 SpriteBatch입니다.


SpriteBatch 클래스는위치 정보를 이용해서 좀더 효율적으로 그림을 그릴 수 있도록 도와주는 클래스입니다. 동일한 Texture를 여러군데에 뿌려줘야할 때 유용하게 쓰입니다. 하지만 만약 Texture가 바뀌게되면 비효율적인데요 이럴 때는 texture packing과정을 통해서 여러 이미지를 하나의 큰 이미지로 합쳐서 사용하게 됩니다.


TextureRegion이라는 클래스를 사용할 수도 있습니다. TextureRegion은 Texture의 조각이라고 생각하시면 됩니다. Texture의 일부를 떼어낸 것이죠. 예를들어, 일반적인 벽지는 무늬가 반복이 되죠? 이 반복되는 무늬를 TextureRegion이라고 보시면 됩니다.


또 다른 방법은 Sprite 클래스를 이용하는 방법입니다. Sprite클래스는 Texture와 위치 정보, 사이즈 정보를 함께 합쳐놓은 클래스입니다. 따라서 화면에 그림을 그릴 때 draw코드내에 위치정보나 사이즈 정보를 입력하지 않아도 됩니다. 대부분의 경우 Sprite클래스를 사용하면 편리하다고 합니다.


자, 그럼 이 세가지를 어떤 경우에 써야 할까요?


일단 간단한 게임을 하나 만든다고 생각해봅시다.


우 선 배경(1)이 있고 그 위에 그려지는 여러 장애물들(2)이 있고, 마지막으로 배경이 움직이는 것처럼 보일 수 있도록 게임진행 내내 스크롤링이 되는 구름배경이나 땅이 움직이는 것처럼 보이도록 해주는 부분(3)이 있다고 가정해보죠.


1번같은 경우에는 그냥 고정해놓으면 됩니다. 따라서 Texture를 이용하면 됩니다.

2번의 경우에는 계속 움직여야되는 아이템들이라 Sprite를 이용합니다.

3번의 경우에는 TextureRegion을 이용합니다. 보이지 않는 스크롤링 효과를 만들기 위해서 여러번 그림을 그려줘야 하기 때문이죠.


자, 여기까지 정리를 해보자면 그래픽 출력하기에는 세가지 방식이 있습니다.


1. SpriteBatch

2. TextureRegion

3. Sprite


아직 저도 많이 사용해보질 않아서 어떤 경우에 이렇게 써야한다라고 딱 잘라서 말할 수는 없지만, 지금 당장은 위에 잠깐 설명드린대로 사용하시면 될것 같습니다.



( 조만간 간략한 소스까지 올리도록 하겠습니다. )