Какой хороший подход для реализации инструмента размазывания для программы для рисования на iPad? - PullRequest
3 голосов
/ 21 июня 2010

На высоком уровне (или на низком уровне, если хотите), каков хороший способ реализации эффекта размытия для программы для рисования на iPad с использованием Quartz2D (Core Graphics)?Кто-нибудь пробовал это?

альтернативный текст http://www.pixlr.com/wiki/_media/help/image_editor/smudge_example.png

Заранее большое спасибо за вашу мудрость!

ОБНОВЛЕНИЕ Я нашел эту замечательную статью для тех, кто заинтересован, проверьте ее!

Ссылка сейчас на: http://losingfight.com/blog/2007/09/05/how-to-implement-smudge-and-stamp-tools/

1 Ответ

1 голос
/ 05 октября 2011

Я бы предложил реализовать алгоритм, аналогичный тому, который подробно описан в этой статье, с использованием OpenGL ES 2.0 для достижения максимальной производительности.

  1. Получить исходное изображение в качестве текстуры
  2. Установитькадровый буфер рендеринга в текстуру
  3. Визуализация исходного изображения в квадрате
  4. Визуализация другого квадрата размером кисти с немного смещенным видом изображения, умноженным на альфа-маску, хранящуюся втекстура или определяется, например, гауссовой функцией.Используйте альфа-смешение с фоновым квадратом.
  5. Визуализация этой текстуры в буфер кадров, связанный с вашим представлением на основе CAEAGLLayer
  6. Переходите к 1 в следующем событии -touchesMoved с результатом предыдущегорендеринг в качестве входа.Имейте в виду, что вам понадобится 2 объекта текстуры для пинг-понга, поскольку вы не можете одновременно читать и писать на одну и ту же текстуру.

Я думаю, что вы вряд ли 'мы получим отличную производительность процессора, но это определенно проще настроить.В этой настройке, однако, вы можете иметь практически неограниченный размер кисти и т. Д., И вы не зацикливаетесь на коде рисования изображения.

Хотя вам любопытно, какую производительность вы получаете на процессоре.Береги :))

...