2010-06-21 10 views
3

À un niveau élevé (ou niveau bas si vous le souhaitez), quel est un bon moyen d'implémenter un effet de bavure pour un programme de dessin sur l'iPad en utilisant Quartz2D (Core Graphics)? Quelqu'un at-il essayé cela?Quelle est une bonne approche pour implémenter un outil de maculage pour un programme de dessin sur l'iPad?

alt text http://www.pixlr.com/wiki/_media/help/image_editor/smudge_example.png

Merci beaucoup à l'avance pour votre sagesse!

MISE À JOUR J'ai trouvé this great article pour les personnes intéressées, le vérifier!

Lien maintenant: http://losingfight.com/blog/2007/09/05/how-to-implement-smudge-and-stamp-tools/

+0

+1 pour le lien de l'article, tous ses articles graphiques sont excellents! – ethyreal

+0

Le lien a changé: http://losingfight.com/blog/2007/09/05/how-to-implement-smudge-and-stamp-tools/ – CoderDan

Répondre

1

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.

  1. Obtenez l'image de départ comme une texture
  2. Mettre en place un framebuffer rendu à la texture
  3. rendu image initiale dans un quad
  4. 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.
  5. Rendu cette texture dans un framebuffer associé à votre vue CAEAGLLayer-backed
  6. 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 :)

+0

Essayer de faire ce travail et je suis assez nouveau sur OpenGL ES. Essayer de faire l'étape n ° 4 mais pas de chance. Des conseils sur la façon de l'accomplir? – Amendale

+0

Essayez de poser une nouvelle question et de joindre votre code? Ne polluons pas cela avec n00b open gl questions. –