2010-06-21 47 views
3

在高层(如果你愿意,层次较低),使用Quartz2D(核心图形)在iPad上为绘图程序实现污迹效果的好方法是什么?有没有人试过这个?在iPad上为绘图程序实施涂抹工具的好方法是什么?

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

感谢这么多提前为你的智慧!

UPDATE我发现this great article对于那些有兴趣,检查它!现在

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

+0

+1为文章链接,他所有的图形文章都非常出色! – ethyreal 2011-06-18 22:13:11

+0

链接已更改: http://losingfight.com/blog/2007/09/05/how-to-implement-smudge-and-stamp-tools/ – CoderDan 2013-12-18 22:48:43

回答

1

我建议实施一个类似的算法什么是使用的OpenGL ES 2.0,以获得最佳的性能在那篇文章中详细介绍。

  1. 获取起始图像作为纹理
  2. 设置渲染到纹理的framebuffer
  3. 在四
  4. 渲染另一个四你的画笔与轻微偏移尺寸来看渲染初始图像乘以存储在纹理中的α掩模或由例如高斯函数定义。使用与背景四元组的alpha混合。
  5. 将此纹理渲染到与CAEAGLLayer支持的视图相关联的帧缓冲区中
  6. 转到下一个-touchesMoved事件的1,并将先前渲染的结果作为输入。请记住,您希望有两个纹理对象在“乒乓”之间,因为您无法同时读取和写入同一纹理。

我认为你不太可能在CPU上获得很好的性能,但是这样设置肯定更容易。但是,在这种设置中,您可以拥有基本无限的画笔大小等,并且您不会遍历图像绘制代码。尽管如此,对你在CPU上获得什么样的性能感到好奇。保重:)

+0

试图使这项工作,我相当新的OpenGL ES。试图做第4步,但没有运气。有关如何完成它的任何提示? – Amendale 2014-11-25 04:23:18

+0

尝试询问一个新问题并附上您的代码?让我们不要用n00b开放式问题污染这个问题。 – 2014-11-25 23:04:37

相关问题