如何在iOS上使用OpenGL ES实现多层次的绘图?

我很快想为iOS制作一个简单的绘图应用程序,但是我无法完成绘图工作,而是保存每个图层上的内容并还原图层。 它看起来像所有的图层保存相同的像素..

这个想法是有三层,使用OpenGL ES绘制每一层。 在这个问题上没有任何经验,我只是平铺了三个UIViews,并向每个UIView(本教程的一个修改版本的PaintingView)添加了一个OpenGL绘图canvas。 当用户交换绘图层时,我只是禁用其他层的用户交互。

通过这种方法,我经历了很多古怪的东西,我认为是源于我的方法。 所以现在,我认为我应该在同一个PaintingView中制作三个全屏缓冲区,并在它们之间切换OpenGL。

我在做什么? 有没有人有办法可行?

任何话题都可能有帮助。 谢谢。

您可以制作两个不同的帧缓冲区:一个用于绘制屏幕,​​另一个用于绘制纹理。 然后,你可以做出3种不同的纹理,他们将是你的图层。 画到他们。 最后,您可以将您具有的纹理绘制到第一个帧缓冲区并显示在屏幕上。

你的抽奖周期会是这样的:

  • 绑定RenderToTextureFramebuffer
  • 将texture1附加到RenderToTextureFramebuffer
  • 在第一层绘制你想要的
  • 将texture2附加到RenderToTextureFramebuffer
  • 在第2层绘制你想要的
  • 将texture3附加到RenderToTextureFramebuffer
  • 在第3层绘制你想要的
  • 绑定RenderToScreenFramebuffer
  • 绑定texture1
  • 绘制texture1(你的layer1)
  • 绑定texture2
  • 绘制texture2(你的layer2)
  • 绑定texture3
  • 绘制texture3(你的layer3)
  • 在屏幕上呈现最终的图片

具有画家的所有function – 撤消/重做等恕我直言,你需要有几个graphics对象的数组,并在每个渲染过程遍历它们。

Interesting Posts