我正在使用OpenGL ES2而不是Core Graphics重写iPad绘图应用程序。 我已经编写了一个可以绘制线段的GLKView的子类,我可以在我的故事板中拖动一个GLKView并将其设置为自定义类。到目前为止,绘图工作,但我也想实现像Photoshop和GIMP中的图层。
我想为每个图层创建多个GLKViews并让UIKit处理混合和重新排序,但这不允许混合模式,并且可能没有良好的性能。
到目前为止,我认为在一个GLKView中做所有事情是最好的解决方案。我想我将不得不使用某种类型的缓冲区作为一个层。我的应用程序也应该能够处理撤消/重做,所以也许我将不得不使用纹理来存储以前的数据。
但是,我是openGL的新手,所以我的问题是: 我该如何实现图层?
答案 0 :(得分:4)
由于问题非常广泛,这里有一个广泛而通用的答案,应该为您提供一些更详细的研究起点。
可能一个好方法是将各个层作为单独的纹理进行管理。通过使用帧缓冲对象(FBO),您可以轻松地直接渲染到纹理中以在图层内绘制。每个纹理将(或多或少)持久地存储单个图像的图像。对于组合图层,您可以使用简单的纹理四边形并使用简单的纹理四边形将每个图层纹理一个接一个地渲染(以适当的顺序,无论可能是什么) 混合您需要的功能。