Je suggère la mise en œuvre d'un algorithme similaire à ce qui est décrit dans cet article en utilisant OpenGL ES 2.0 pour obtenir les meilleures performances.
- Obtenez l'image de départ comme une texture
- Mettre en place un framebuffer rendu à la texture
- rendu image initiale dans un quad
- rendu un autre quad la taille de votre pinceau avec une vue légèrement décalée de l'image, multiplié par un masque alpha stocké dans une texture ou défini par, par exemple, une fonction gaussienne. Utilisez alpha-blending avec le quadri-arrière-plan.
- Rendu cette texture dans un framebuffer associé à votre vue CAEAGLLayer-backed
- Accédez à 1 sur l'événement -touchesMoved suivant, avec le résultat de votre rendu précédent comme entrée. Gardez à l'esprit que vous voudrez avoir 2 objets de texture à "ping-pong" entre comme vous ne pouvez pas lire et écrire à la même texture à la fois.
Je pense qu'il est peu probable que vous obteniez de grandes performances sur le processeur, mais c'est vraiment plus facile à configurer de cette façon. Dans cette configuration, cependant, vous pouvez avoir une taille de pinceau pratiquement illimitée, etc. et vous ne faites pas de boucle sur le code de dessin d'image. Cependant, curieux de savoir quel type de performance vous obtenez sur le CPU. Attention :)
+1 pour le lien de l'article, tous ses articles graphiques sont excellents! – ethyreal
Le lien a changé: http://losingfight.com/blog/2007/09/05/how-to-implement-smudge-and-stamp-tools/ – CoderDan