Использование CoreImage на GPU и UIActivityIndicator - PullRequest
0 голосов
/ 27 августа 2018

Фон

Я разрабатываю расширение для приложения для редактирования фотографий iOS.Теперь, когда мой код Core Image работает должным образом, я переключаю свое внимание на повышение производительности (это не быстро, по крайней мере, на симуляторе).

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

В то же время я представляюмодально пользовательский контроллер представления, который отображает представление индикатора активности , чтобы информировать пользователя о продолжительном процессе

enter image description here

(это только для предварительного просмотра; для окончательной фиксации Photos.app вступает во владение и отображает собственный вид индикатора активности)

Проблема

ЧтениеВ Руководстве по программированию Core Image, в разделе « Получение максимальной производительности », я натолкнулся на этот совет:

Избегайте анимации Core Animation при рендеринге CIImageобъекты с контекстом графического процессора.

Если вам нужно использовать оба одновременно, вы можете настроить оба на использование процессора.

Это заставило меня задуматься;Разве UIKit (и UIActivityIndicatorView в частности) не использует Core Animation?

Что касается окончательного рендеринга, я все равно рассматриваю возможность использования процессора: по сообщениям, он, кажется, дает более качественные результаты, а графический процессор имеет ограничения по размеру, которые могут быть легко перегружены полноразмерным размером оригинальных изображений, которые обычно встречаютсяв библиотеке фотографий.

Но для размера экрана при предпросмотре я бы предпочел использовать графический процессор.

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

Как обеспечить анимированную обратную связь при примененииCoreImage фильтрует изображение на GPU?


Похожий (но не дубликат, если я не ошибаюсь) вопрос: Как вы запускаете CoreАнимация и образ ядра вместе на процессоре?

...