如何实现多层与OpenGL ES的iOS上画什么?(How to achieve multi-lay

2019-06-26 22:55发布

我想很快做出了iOS的一个简单的绘图应用程序,但我不能完全得到绘图工作 - 好,以节省每一层上的内容并恢复层。 它看起来像所有层保存同一像素..

其想法是具有三个层和使用OpenGL ES绘制每个层上。 在这个问题上没有经验,我只是平铺3个UIViews,并增加了OpenGL绘图画布的每个UIView的(从教程PaintingView的修改版本)。 当用户绘制交换层,我在其它层简单地禁用用户交互。

用这种方法我经历了很多,我认为从我的做法茎古怪的。 所以,现在,我认为我应该以某种方式使在同一PaintingView三个全屏幕缓冲区,只是他们之间的OpenGL开关。

我是上的东西吗? 有任何人工作的方法?

切合主题的任何可能的帮助。 谢谢。

Answer 1:

你可以让两个不同的帧缓冲区:一个用于绘制画面和第二绘制纹理。 然后,你可以让3个不同的纹理,他们将是你的图层。 画他们。 最后,你能得到你要的第一帧缓冲区并在屏幕上呈现的纹理。

您的抽奖周期会水木清华这样的:

  • 绑定RenderToTextureFramebuffer
  • 附加texture1到RenderToTextureFramebuffer
  • 你画在1层要什么
  • 附加纹理2至RenderToTextureFramebuffer
  • 你画在第2层要什么
  • 附加texture3到RenderToTextureFramebuffer
  • 你画在第3层要什么
  • 绑定RenderToScreenFramebuffer
  • 绑定texture1
  • 画texture1(你的层1)
  • 绑定纹理2
  • 绘制纹理2(你的二层)
  • 绑定texture3
  • 画texture3(你的三层)
  • 在屏幕上存在的最后图像


Answer 2:

有画家的所有功能 - 撤销/重做等恕我直言,你需要有几个刚图形对象的数组,并通过他们在每个迭代渲染过程。



文章来源: How to achieve multi-layered drawing with OpenGL ES on iOS?