0

我正在使用 OpenGL ES2 而不是 Core Graphics 重写 iPad 绘图应用程序。我已经编写了一个可以绘制线段的 GLKView 子类,我可以在我的故事板中拖动一个 GLKView 并将其设置为自定义类。到目前为止,绘图工作,但我也想在 Photoshop 和 GIMP 中实现图层。

我想过为每一层创建多个 GLKView 并让 UIKit 处理混合和重新排序,但这不会允许混合模式并且可能没有良好的性能。

到目前为止,我认为在一个 GLKView 中完成所有操作是最好的解决方案。我想我将不得不使用某种关闭缓冲区作为图层。我的应用程序也应该能够处理撤消/重做,所以也许我将不得不使用纹理来存储以前的数据。

但是,我是 openGL 的新手,所以我的问题是:我应该如何实现层?

4

1 回答 1

4

由于这个问题非常广泛,这里有一个广泛而普遍的答案,应该为您提供一些更详细研究的起点。

一个好的方法可能是将各个层作为单独的纹理进行管理。通过使用帧缓冲区对象 (FBO),您可以轻松地直接渲染到纹理中,以便在图层内进行绘制。每个纹理将(或多或少)持久地存储单层的图像。为了组合图层,您将使用一个简单的纹理四边形和您需要的混合功能一个一个地渲染每个图层纹理(以适当的顺序,无论可能是什么) 。

于 2013-07-01T11:39:02.303 回答