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

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

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

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

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

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

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

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

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

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

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

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

Intereting Posts
Как предварительно заполнить базу данных sqlite Green DAO Состояние гонки между Application onCreate и загруженными ресурсами? Android: Как выровнять кнопку до нижней и над клавиатурой, когда она поднята? Android, быстрый вопрос о лучших практиках Android & PhoneGap – метод вызова ошибок в NPObject Изменение значка переполнения в панели действий GCM – Получение сообщения об ошибке «При обработке запроса произошла неизвестная ошибка. Повторите попытку "при создании нового проекта Коснитесь координат в текстовом режиме Выполнение фоновых задач – альтернатива AsyncTask? Передача сообщения о намерении INSTALL_REFERRER Мгновенный запуск отключен для применения с несколькими приложениями Идеальный способ установки глобального обработчика исключенных исключений в Android Загрузите файл на Amazon S3 с Android slow App-debug-unaligned.apk для свойства 'inputFile' не существует Каков наилучший способ разработки «независимого от платформы» GWT-сервера?