Производительность отрисовки радиального градиента - Можно ли улучшить OpenGL-ES?

Я работаю над приложением для обработки изображений, которое накладывает радиальный градиент на изображение, загруженное из библиотеки фотографий.

На экране У меня есть ползунок для динамического увеличения / уменьшения радиуса радиального градиента. Я обнаружил, что производительность симулятора очень хорошая, но на iPhone 3G или 3GS он намного медленнее перерисовывается при перемещении ползунка.

I ' m в настоящее время использует CGContextDrawRadialGradient для рисования. Шаги, которые я выполняю для каждой перерисовки:

  1. Создание графического контекста: UIGraphicsBeginImageContext (size) ;
  2. Создание объекта градиента: CGGradientCreateWithColorComponents
  3. Нарисуйте изображение (фотография загружена из фото библиотеки) в масштабе экрана: drawInRect
  4. Установите режим наложения наложения: CGContextSetBlendMode
  5. Нарисуйте градиент: CGContextDrawRadialGradient
  6. Создайте UIimage с помощью UIGratextCurrentImage ;
  7. UIGraphicsEndImageContext ();
  8. Выводит законченное изображение на экран: drawInRect .

Есть ли более быстрый способ рисования? Возможно, с помощью OpenGL?

Мы будем благодарны за любые предложения / примеры кода.

Спасибо.

7
задан Regexident 24 December 2013 в 12:36
поделиться