2

iOS用の簡単な描画アプリをすぐに作成したかったのですが、描画をうまく機能させることができません.各レイヤーのコンテンツを保存してレイヤーを復元する. すべてのレイヤーが同じピクセルを保存しているように見えます..

アイデアは、3 つのレイヤーを持ち、OpenGL ES を使用して各レイヤーに描画することでした。この問題に関する経験がないので、3 つの UIView を並べて表示し、OpenGL 描画キャンバスを各 UIView (チュートリアルの PaintingView の修正版) に追加しました。ユーザーが描画レイヤーを交換したとき、他のレイヤーでのユーザー操作を単に無効にしました。

このアプローチでは、私のアプローチに起因すると思われる多くの奇妙なことを経験します。だから今、どうにかして同じPaintingViewに3つの全画面バッファを作成し、それらの間でOpenGLを切り替える必要があると思います。

私は何かに取り組んでいますか?誰かが機能するアプローチを持っていますか?

トピックに関するものは何でも役立つかもしれません。ありがとう。

4

2 に答える 2

4

2つの異なるフレームバッファを作成できます。1つは画面に描画するためのもので、もう1つはテクスチャに描画するためのものです。次に、3つの異なるテクスチャを作成できます。それらがレイヤーになります。それらに引き寄せます。最後に、必要なテクスチャを最初のフレームバッファに描画して、画面に表示できます。

ドローサイクルは次のようになります。

  • RenderToTextureFramebufferをバインドします
  • texture1をRenderToTextureFramebufferにアタッチします
  • レイヤー1に必要なものを描画します
  • texture2をRenderToTextureFramebufferにアタッチします
  • レイヤー2で必要なものを描画します
  • texture3をRenderToTextureFramebufferにアタッチします
  • レイヤー3で必要なものを描画します
  • RenderToScreenFramebufferをバインドします
  • texture1をバインドします
  • texture1(レイヤー1)を描画します
  • texture2をバインドします
  • texture2(レイヤー2)を描画します
  • texture3をバインドします
  • texture3(レイヤー3)を描画します
  • 画面に最終的な画像を表示する
于 2012-08-15T15:28:11.383 に答える
0

ペインターのすべての機能(元に戻す/やり直しなど)を使用するには、グラフィックオブジェクトの配列をいくつか用意し、すべてのレンダーパスでそれらを反復処理する必要があります。

于 2012-08-20T14:12:00.483 に答える