Как удалить фон со спрайтов?

Раньше я всегда делал свои собственные листы спрайтов и просто делал их прозрачными. Но я всегда вижу листы спрайтов с розоватым цветом в качестве фона. Как бы вы расшифровали это в игре?

тоже что лучше? используя прозрачный файл .png? или иметь сплошной цвет фона?

введите здесь описание изображения

Если кому интересно, я использую класс BufferedImage и getSubImage.


person Steven    schedule 23.08.2013    source источник
comment
Лично прозрачный PNG проще, но может потребовать больше обработки при загрузке, но тогда мне не нужно об этом заботиться.   -  person MadProgrammer    schedule 23.08.2013
comment
Ваша конечная цель — сделать фон вашего спрайта прозрачным или разработать программу, которая это сделает?   -  person jsedano    schedule 23.08.2013
comment
иногда редакторы отображают прозрачность как альтернативный цвет/шаблон   -  person BevynQ    schedule 23.08.2013
comment
См. этот ответ, чтобы узнать, как сделать один цвет прозрачным на изображении.   -  person Andrew Thompson    schedule 23.08.2013


Ответы (2)


Обычно существует три способа сделать спрайты прозрачными: либо с помощью отдельного альфа-канала, либо с помощью отдельной битовой маски, либо просто с использованием прозрачного цвета. Последний обычно используется с индексированным цветом, так как это так же просто, как заменить цвет одного из индексов (тот, что с розовым цветом в вашем случае) на прозрачность.

Единственное преимущество, которое я вижу в этой технике, это сохранение памяти. Но я сделал не так много игр, так что могут быть и другие причины для этого.. ;-)

person Harald K    schedule 23.08.2013
comment
Недостатком этого метода является то, что он работает только для 1-битной прозрачности. Реальная прозрачность PNG может быть 1-битной — включенной или выключенной — или полным 8-битным диапазоном. Однако он добавляет совершенно новый цветовой канал, поэтому используйте его только в том случае, если вам нужна переменная прозрачность. - person Jongware; 03.09.2013

Если вы не возражаете против использования библиотеки, я использую lwjgl и делаю листы спрайтов с помощью текстурного пакета.

Texturepacker автоматически генерирует xml-файлы для текстур и помещает все текстуры в один файл png.

Как только я это сделаю, я использую gimp и просто использую ластик, пока фон не станет прозрачным.

Затем в вашей программе вам просто нужно ввести

glEnable(GL_BLEND);

glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

и прозрачность должна работать автоматически, хотя на самом деле настроить доступ к спрайт-листам и тому подобному немного сложнее.

person Ben Marshall    schedule 23.08.2013