2

我想很快为 iOS 制作一个简单的绘图应用程序,但我不能完全让绘图工作 - 好吧,保存每个图层上的内容并恢复图层。似乎所有图层都保存相同的像素..

这个想法是拥有三层并使用 OpenGL ES 在每一层上绘制。由于没有这方面的经验,我只是平铺了三个 UIView,并为每个 UIView 添加了一个 OpenGL 绘图画布(教程中的 PaintingView 的修改版本)。当用户交换绘图层时,我只是禁用了其他层上的用户交互。

通过这种方法,我遇到了很多我认为源于我的方法的奇怪之处。所以现在,我认为我应该以某种方式在同一个 PaintingView 中制作三个全屏缓冲区,并在它们之间切换 OpenGL。

我在做某事吗?有没有人可行的方法?

任何有关主题的内容都可能有所帮助。谢谢。

4

2 回答 2

4

您可以制作两种不同的帧缓冲区:一种用于绘制到屏幕,另一种用于绘制到纹理。然后,您可以制作 3 种不同的纹理,它们将成为您的图层。吸引他们。最后,您可以将您拥有的纹理绘制到第一个帧缓冲区并呈现在屏幕上。

您的抽奖周期将是这样的:

  • 绑定 RenderToTextureFramebuffer
  • 将 texture1 附加到 RenderToTextureFramebuffer
  • 在第 1 层画出你想要的东西
  • 将 texture2 附加到 RenderToTextureFramebuffer
  • 在第 2 层画出你想要的东西
  • 将 texture3 附加到 RenderToTextureFramebuffer
  • 在第 3 层画出你想要的东西
  • 绑定 RenderToScreenFramebuffer
  • 绑定纹理1
  • 绘制texture1(你的layer1)
  • 绑定纹理2
  • 绘制texture2(你的layer2)
  • 绑定纹理3
  • 绘制texture3(你的layer3)
  • 在屏幕上呈现最终图片
于 2012-08-15T15:28:11.383 回答
0

要拥有画家的所有功能-撤消/重做等等恕我直言,您只需要几个图形对象数组并在每个渲染过程中遍历它们。

于 2012-08-20T14:12:00.483 回答