Каковы плюсы и минусы листа спрайта по сравнению с последовательностью изображений? - PullRequest
3 голосов
/ 13 августа 2010

Я пришел из фона 2D-анимации, и поэтому, когда я использую анимационную последовательность, я предпочитаю использовать последовательность изображений.Для меня это имеет большой смысл, потому что вы можете легко экспортировать последовательность изображений из вашего программного обеспечения для композитинга / редактирования и легко определить аспект.

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

В принципе, я не понимаю, зачем вам использовать лист спрайтов - пожалуйста, просветите меня.

Спасибо

Ответы [ 3 ]

6 голосов
/ 19 августа 2010

Производительность лучше для листов спрайтов, потому что все ваши данные содержатся в одной текстуре.Допустим, у вас есть 1000 спрайтов, воспроизводящих одну и ту же анимацию с листа спрайтов.Процесс рисования будет выглядеть примерно так:

Set the sprite sheet texture.
Adjust UV's to show single frame of animation.
Draw sprite 0
Adjust UV's
Draw sprite 1
.
.
.
Adjust UV's
Draw sprite 998
Adjust UV's
Draw sprite 999

Использование последовательности текстур может привести к худшему случаю:

Set the animation texture.
Draw sprite 0
Set the new animation texture.
Draw sprite 1
.
.
.
Set the new animation texture.
Draw sprite 998
Set the new animation texture.
Draw sprite 999

Гах!Перед рисованием каждого спрайта вы должны установить состояние рендера, чтобы использовать другую текстуру, а это намного медленнее , чем настройка пары UV.

4 голосов
/ 13 августа 2010

Многие (большинство?) Графических карт требуют квадратов для изображений с степенью двойности. Так, например, 128x128, 512x512 и т. Д. Многие / большинство спрайтов, однако, не являются такими измерениями. Затем у вас есть два варианта:

  • Округление изображения спрайта до ближайшего квадрата степени двойки. Спрайт 16x32 становится вдвое больше с прозрачным заполнением пикселей до 32x32. (это очень расточительно)
  • Упакуйте несколько спрайтов в одно изображение. Вместо заполнения с прозрачностью, почему бы не заполнить другими изображениями? Упакуйте эти изображения максимально эффективно! Затем просто визуализируйте сегменты изображения, что полностью допустимо.

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

Итак, подведем итог: файлы изображений при загрузке в видеокарту должны иметь степень двойки и квадрат. Тем не менее, программа может выбрать визуализацию произвольного прямоугольника этой текстуры на экране; оно не должно быть степенью двойки или квадратом. Итак, упакуйте текстуру с несколькими изображениями, чтобы наиболее эффективно использовать пространство текстур.

2 голосов
/ 17 августа 2010
  • Листы спрайтов имеют тенденцию быть меньше файлы (так как есть только 1 заголовок для всего лота.)
  • Листы Sprite загружаются быстрее, так как есть только один доступ к диску, а не несколько
  • Вы можете легко просматривать или настраивать несколько кадров сразу
  • Меньше тратится видеопамяти, когда вы загрузить всю партию в одну поверхность (как сказал Рикет)
  • Отдельные спрайты могут быть очерчены смещениями (например, в неявной сетке - нет необходимости явно отмечать или отмечать положение каждого спрайта)

Использование спрайт-листов не дает больших преимуществ, кроме нескольких небольших. Но практика восходит к тому времени, когда большинство людей использовали правильное программное обеспечение для 2D-графики для создания игровой графики, поэтому рабочий процесс художника не обязательно был самой важной вещью в то время.

...