У меня есть 32-кадровая анимация в оттенках серого, в которой алмаз взрывается на куски (т.е. 32 PNG-изображения при 1024x1024)
моя игра состоит из 12 отдельных цветов, поэтому мне нужно выполнить анимацию в любом желаемом цвете
это, я считаю, исключает любые фреймворки Apple, а также исключает много открытого кода для анимации покадрового анимации в iOS.
каковы мои потенциальные пути решения?
это лучшие SO ссылки, которые я нашел:
, который только что показывает, что возможно загружать изображение в текстуру GL каждый кадр (онделает это с камеры, поэтому, если у меня есть все, что хранится в памяти, это должно быть еще быстрее)
Я вижу эти опции (перечислены самые ленивые в первую очередь, самые оптимизированные в последнюю очередь)
вариант A каждый кадр (предоставленоCADisplayLink), загрузите соответствующее изображение из файла в текстуру и отобразите эту текстуру
Я почти уверен, что это глупо, поэтому для опции B
опция B предварительно загрузите все изображения в память, как описано выше, только мы загружаем из памяти, а не из файла
Я думаю, что это будет идеальное решение, кто-нибудь может дать ему большой палец вверх или большой палец вниз?
опция C предварительно загружать все мои PNG в одну текстуру GL максимального размера, создавая атлас текстуры.в каждом кадре задайте координаты текстуры для прямоугольника в Atlas для этого кадра.
, хотя это потенциально идеальный баланс между эффективностью кодирования и производительностью, основной проблемой здесь является потеря разрешения;на старых устройствах iOS максимальный размер текстуры составляет 1024x1024.если мы поместим в него 32 кадра (на самом деле это то же самое, что и 64), мы получим 128x128 для каждого кадра.если полученная анимация близка к полноэкранному на iPad, она не взломает ее
опция D вместо загрузки в одну текстуру GL, а затем загрузите в кучу текстурмы можем сжать 4 изображения в одну текстуру, используя все четыре канала
Я не понимаю, сколько здесь нужно сложного кодирования.Мой RSI начинает дрожать, даже думая об этом подходе
Я думаю, что я ответил на свой вопрос здесь, но если кто-то на самом деле сделал это или может понять, пожалуйста, ответьте!