2013-06-30 80 views
0

我正在用OpenGL ES2而不是Core Graphics重寫iPad繪圖應用程序。 我已經寫了GLKView的子類,可以繪製線段,我可以在故事板中拖動GLKView並將其設置爲自定義類。到目前爲止,繪圖工作,但我也想實現像Photoshop和GIMP中的圖層。OpenGL ES 2 2D分層繪圖

我想爲每個圖層創建多個GLKView,並讓UIKit處理混合和重新排序,但這不會允許混合模式,並且可能沒有很好的性能。

到目前爲止,我認爲在一個GLKView中做所有事情是最好的解決方案。我想我將不得不使用某種類型的關閉緩衝區作爲一個層。我的應用程序也應該能夠處理撤消/重做,所以也許我將不得不使用紋理來存儲以前的數據。

但是,我是新來的openGL所以我的問題是: 我應該如何實現層?

回答

4

由於這個問題非常廣泛,下面是一個廣泛和普遍的答案,應該給你一些更詳細的研究的起點。

可能一個好方法是將各個圖層作爲單獨的紋理來管理。通過使用幀緩衝區對象(FBO),您可以直接將其直接渲染到用於在圖層內進行繪製的紋理。每個紋理(或多或少)都會持久地存儲單個圖層的圖像。爲了合併圖層,您可以使用簡單的紋理四邊形混合函數來渲染每個圖層紋理(在適當的順序,無論可能是什麼)。

+0

偉大的,你強調重要的關鍵字,如*紋理*和* framebuffer對象*。 –

+0

有了這樣一個廣泛的問題,除了委託提問者總體方法和提供一些第一個谷歌目標之外,沒有什麼比做更多的事。 –