3

在高级别(或低级别,如果您愿意),使用 Quartz2D(核心图形)在 iPad 上为绘图程序实现涂抹效果的好方法是什么?有没有人试过这个?

替代文字
(来源:pixlr.com

非常感谢您的智慧!

更新我为那些感兴趣的人找到了这篇很棒的文章,检查一下!

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

4

1 回答 1

1

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

  1. 获取起始图像作为纹理
  2. 设置渲染到纹理帧缓冲区
  3. 在四边形中渲染初始图像
  4. 渲染另一个与画笔大小相同的四边形,图像的视图略有偏移,乘以存储在纹理中或由例如高斯函数定义的 alpha 蒙版。对背景四边形使用 alpha 混合。
  5. 将此纹理渲染到与 CAEAGLLayer 支持的视图关联的帧缓冲区中
  6. 在下一个 -touchesMoved 事件上转到 1,将之前渲染的结果作为输入。请记住,您需要有 2 个纹理对象在它们之间“乒乓”,因为您不能一次读取和写入相同的纹理。

我认为您不太可能在 CPU 上获得出色的性能,但这样设置肯定更容易。但是,在此设置中,您基本上可以拥有无​​限的画笔大小等,并且您不会循环遍历图像绘制代码。

不过,对您在 CPU 上获得什么样的性能感到好奇。小心 :)

于 2011-10-05T00:55:43.627 回答