LIBGDX лучше использовать спрайты или отдельные изображения?

Я новичок в LIBGDX, я сделал 40 кадров для справки «герой работает», и я не знаю, лучше ли использовать спрайты или отдельные изображения. Spritesheet будет очень большим, потому что я хочу высокого разрешения даже на устройствах 1080p. Можете ли вы сказать мне, в каком случае (спрайты или отдельные изображения) производительность будет мне лучше?

Поскольку другие ответы здесь не указывают на вас в неправильном направлении, но не на 100% точны, я добавлю более подробное объяснение.

В случае анимации это не должно меняться с точки зрения производительности!

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

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

Исключением для этого было бы, если вы нарисуете нескольких героев в одном кадре. Используя отдельные изображения, вам нужно будет каждый раз переключать текстуру, потому что герои, вероятно, не синхронизированы. В случае спрайта вы привязываете текстуру только один раз, а затем рисуете всех героев с той однажды текстурой листа (в этом случае произойдет только одно связывание текстуры).

Однако вы наверняка получите увеличение производительности, если вы сделаете свой персонаж-анимационный-spritesheet частью другого, «большего» спрайта, где также упаковываются другие текстуры. Таким образом, вы можете снова нарисовать свой персонаж и другие вещи с помощью единственного связывания текстуры.

Единственная проблема с spritesheets заключается в том, что они, как правило, теряют пространство. Особенно на мобильных устройствах, когда вы вынуждены использовать текстуры POT (мощность двух), это может иметь значение.

Я думаю, что лучше использовать TextureAtlases (должен быть некоторый вид спрайта). Обратите внимание, что некоторые старые устройства Android не могут загружать изображения, которые больше, чем 512 * 512. Если вы не настроите таргетинг на старые устройства, вы должны установить максимум 1024 * 1024 px. Поэтому, если ваш спрайт занимает больше, чем вам, вы должны разделить его более чем на один.

Справки очень эффективны.

В OpenGL (который Libgdx является оберткой) текстура рисуется путем отправки на графическую карту. Причина использования SpriteSheets заключается в том, что всю текстуру нужно только «отправить» один раз, а затем отдельные сегменты изображения можно нарисовать на кадр спрайта. Это намного быстрее, чем привязка новой текстуры для каждого кадра, что было бы очень расточительно с точки зрения ресурсов.

Intereting Posts
Android Studio: Переключение URL-адреса в зависимости от типа сборки? (Используется для тестирования в отладке / выпуске) Взгляд Android постепенно исчезает Прокручиваемый макет в Android Почему IntelliJ IDEA создает только неглавные APK в проектах Gradle? Правильный способ абстрактного Realm в приложениях для Android Закладка пунктов меню в панели действий sherlock Android: как получить аудиоданные из аудиофайла OnMeasure не получает вызов в моей пользовательской группе viewgroup android «Ничего не делать» с использованием тройного оператора Изменение атрибутов представления в элементе списка элементов «Минимизировать» действие в Android (не завершайте его) GridView.LayoutParams не существует, разрывается код Android Аудио не будет воспроизводиться на Android с помощью телефонной затычки, но отлично работает на iOS Сравнить два изображения в android Получить информацию об AutocompleteTextView из полученного AutoCompleteTextView $ DropDownListView