在iPad上为绘图程序实现涂抹工具的好方法是什么?

时间:2010-06-21 18:31:03

标签: iphone ipad core-graphics quartz-graphics quartz-2d

在高级别(或者你想要的低级别),使用Quartz2D(核心图形)在iPad上为绘图程序实现涂抹效果的好方法是什么?有人试过吗?

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

非常感谢您的智慧!

更新 我找到感兴趣的人this great article,请查看!

现在链接:http://losingfight.com/blog/2007/09/05/how-to-implement-smudge-and-stamp-tools/

1 个答案:

答案 0 :(得分:1)

我建议使用OpenGL ES 2.0实现类似于该文章中详述的算法,以获得最佳性能。

  1. 将起始图像作为纹理
  2. 设置渲染到纹理的帧缓冲区
  3. 以四元组渲染初始图像
  4. 使用稍微移动的图像视图渲染另一个四倍大小的画笔,乘以存储在纹理中的alpha遮罩或由例如高斯函数定义。使用alpha混合背景四边形。
  5. 将此纹理渲染到与CAEAGLLayer支持的视图关联的帧缓冲区中
  6. 在下一个-touchesMoved事件中转到1,将前一个渲染的结果作为输入。请记住,您需要在两个纹理对象之间“乒乓”,因为您无法一次读取和写入相同的纹理。
  7. 我认为你不太可能在CPU上获得出色的表现,但设置这种方式肯定更容易。但是,在此设置中,您可以拥有基本上无限的笔刷大小等,而且您不会在图像绘制代码上循环。

    很好奇你在CPU上获得了什么样的性能。小心:)