如何在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对象的数组,并在每个渲染过程遍历它们。