Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: StevenОтветов: 2

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

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

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

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

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

javaimagepngtransparencybufferedimage

Ответы

Ответ 1 · рейтинг 2 · Harald K

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

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

Ответ 2 · Ben Marshall

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

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

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

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

glEnable(GL_BLEND);

glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы