Intereting Posts
Проект Android появляется с дублирующимся приложением после развертывания Тестирование устройств Android с помощью Junit: тестирование сетевых / bluetooth-ресурсов Воспроизведение по умолчанию мягкой клавиатуры при нажатии кнопок в android Android 4.4 – Прозрачные статусные / навигационные полосы – fitsSystemWindows / clipToPadding не работают через транзакции фрагментов Предупреждение в Google Play: обработчик WebViewClient.onReceivedSslError Как получить центр карты для v2 карт Android? Разный дизайн для ориентации на пейзаж и портретную ориентацию Ионное уведомление Push: Как обрабатывать onClick? Установите стиль текста текста текста в редакторе Edittexts как курсив Отменить регистрацию устройства из GCM с помощью регистрационного идентификатора в Android Android: animateLayoutChanges = "true", что я могу сделать, если эффект затухания нежелателен? ADT не позволит создавать Android-активность GetLayoutParams возвращает null? Звук уведомления, вибрация и светодиод не работают Android: перемещение вида при перемещении касания (ACTION_MOVE)

Когда использовать ShapeRenderer, Mesh + SpriteBatch, Box2D и Scene2D в Libgdx?

Я новичок в разработке игр для Android, и после того, как я начал с libgdx ShapeRenderer и сделал еще немного поиска, я смутился, если начал с правой ноги.

Итак, я хотел бы знать, когда следует использовать ShapeRenderer, Mesh + SpriteBatch, Box2D и Scene2D.

Solutions Collecting From Web of "Когда использовать ShapeRenderer, Mesh + SpriteBatch, Box2D и Scene2D в Libgdx?"

LibGDX имеет довольно много (в основном ортогональных) API для рендеринга. Я все еще участвую во многих из них, но я могу дать обзор различных частей.

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

Класс Mesh дает вам более прямой контроль над геометрией, но вы подвергаетесь гораздо большему количеству деталей (например, цвета кодирования как поплавки и хранение данных вершин, данных цвета и данных текстуры в одном массиве с плавающей точкой, а концепция Индексных массивов).

SpriteBatch ориентирован вокруг «спрайтов» (как правило, прямоугольных областей с текстурой в них). Это скрывает некоторую сложность (и гибкость) текстурирования с помощью сеток.

Box2D предназначен для физического моделирования и не похож ни на одну из других частей API, о которых вы говорили (в основном это касается рендеринга).

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

Вы также можете использовать необработанные команды «OpenGL» (см. GL20 ).

Вы можете полностью смешивать и сопоставлять эти разные примитивы (одна из предостережений заключается в том, что вы обычно должны «смывать» и «заканчивать» все, что ShapeRenderer / SpriteBatch / Mesh визуализировать, прежде чем начинать другой вкус). Так, например, вы можете использовать Scene2D для своего «главного меню» и некоторых мета-действий в вашей игре, SpriteBatch чтобы отобразить ядро ​​вашей игры и использовать ShapeRenderer для создания отладочных наложений (подумайте о визуализации ограничивающих блоков и т. Д.).

Также обратите внимание, что большая часть libGDX ориентирована на 2D. Raw OpenGL и API-интерфейсы Mesh также могут использоваться для создания 3D-объектов.

Проверьте пример gdx-invaders, чтобы узнать, как он использует Mesh , OpenGL и SpriteBatch . (Я думаю, что этот пример предваряет Scene2d, поэтому нет ничего …). Также стоит взглянуть на реализацию этих классов, чтобы увидеть, что они делают под обложками.