2013-08-23 4 views
0

과거에는 항상 스프라이트 시트를 만들었으며 투명하게 만들었습니다. 하지만 나는 분홍색을 배경으로 스프라이트 시트를 항상 보았습니다. 게임에서 이것을 어떻게 처리 하시겠습니까?스프라이트 시트에서 배경을 제거하는 방법?

어느 쪽이 더 낫습니까? 투명한 .png 파일을 사용하고 있습니까? 또는 단색 배경색이 있습니까?

enter image description here

이 경우 사람이 내가 BufferedImage의 클래스를 사용하고 난 getSubImage 궁금합니다.

+2

개인적으로 투명한 PNG가 더 쉽지만로드 할 때 더 많은 처리가 필요할 수 있지만 필요하지 않습니다. 그것을 돌봐야합니다. – MadProgrammer

+1

궁극적 인 목표는 스프라이트의 배경을 투명하게 만드는 것입니까, 아니면 그렇게하는 소프트웨어를 개발하는 것입니까? – jsedano

+0

때때로 편집자는 투명 색상을 대체 색상/패턴으로 표시합니다. – BevynQ

답변

0

라이브러리를 사용하지 않으려면 lwjgl을 사용하고 texturepacker를 사용하여 스프라이트 시트를 만드십시오.

Texturepacker는 텍스처의 xml 파일을 자동으로 생성하고 텍스처를 모두 하나의 PNG에 배치합니다.

일단 그렇게하면 김프를 사용하고 배경이 투명해질 때까지 지우개 도구를 사용하십시오.

그런 다음 프로그램에서 당신은

glEnable (GL_BLEND)를 입력해야합니다;

glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

및 투명도가 자동으로 작동합니다는 더 고통의 약간은 실제로 spritesheets 접근 설정하는 등 비록

2

는 스프라이트를 투명하게 만들 수있는 세 가지 방법이 일반적으로있다, 중 하나를 사용하여 별도의 알파 채널을 사용하여 별도의 비트 마스크 또는 단순히 투명한 색을 사용합니다. 후자는 보통 색인 중 하나의 색상 (귀하의 경우 분홍색으로 된 색상)을 투명하게 대체하는 것처럼 간단하므로 색인 된 색상과 함께 사용됩니다.

이 기술에서 볼 수있는 유일한 이점은 메모리를 보존한다는 것입니다. 그러나 나는 많은 게임을 만들지 않았기 때문에이 작업을 수행 할 다른 이유가있을 수 있습니다. ;-)

+0

이 방법의 단점은 1 비트 투명도에서만 작동한다는 것입니다. "실제"PNG 투명도는 1 비트 - 온 또는 오프 - 또는 전체 8 비트 범위 일 수 있습니다. 그것은 새로운 색상 채널을 추가합니다. 그래서 변수 투명성이 필요한 경우에만 사용하십시오. – usr2564301

관련 문제