Я пишу небольшой 2D игровой движок в OpenGL ES 2.0.Это работает, но для сцен среднего размера кажется немного вялым в настоящее время.Я разработал его так, чтобы каждый игровой объект представлял собой дерево узлов, а каждый узел - примитивную форму (треугольник, квадрат, круг).И каждый узел может иметь произвольный набор преобразований, примененных к нему при создании, а также во время выполнения.
Для иллюстрации, «головной» узел - это круг, и у него есть дочерний «шляпный» узел, который являетсятреугольник с трансформацией трансляции, чтобы переместить его на вершину круга.Теперь во время выполнения я могу перемещать голову с помощью анимированного преобразования перевода на голове, и шляпа движется вместе с ним.Или я могу анимировать «верхушку шляпы», применяя преобразование вращения только к шляпе, динамически во время выполнения.
При рендеринге каждый узел применяет свои собственные статические преобразования (шляпа движется вверх), а затем любые динамические переводы.(подсказка шляпы), и так далее для каждого родительского узла.Есть три матрицы на узел плюс еще три для каждой примененной динамической анимации.Для глубоких деревьев это сложная математическая математика.
Похоже, это хорошая вещь, чтобы по возможности подтолкнуть GPU, но, поскольку анимации применяются динамически, я не знаю заранее, сколькопреобразования каждый узел будет проходить для того, чтобы написать шейдер для обработки.Я новичок в OpenGL ES 2.0 и дизайне игрового движка и не знаю всех ограничений.
Мои вопросы ...
- Я радикально не согласен с "хороший "дизайн игрового движка?
- Это действительно задача для процессора или графического процессора?
- Можно ли написать шейдер OpenGL 2.0 ES для обработки произвольного числа преобразований, которые соответствуют моему"Дерево объектов "Матрицы проектирования и применения во время выполнения?