1

iPhone画面での最後の描画アクションの単純な「元に戻す」を実装する方法を見つけようとしています。最初にフレーム バッファを準備して描画します。

[EAGLContext setCurrentContext:context];
glBindFramebufferOES(GL_FRAMEBUFFER_OES, viewFramebuffer);

次に、頂点配列を準備し、次のように描画します。

glVertexPointer(2, GL_FLOAT, 0, vertexBuffer);
glDrawArrays(GL_POINTS, 0, vertexCount);
glBindRenderbufferOES(GL_RENDERBUFFER_OES, viewRenderbuffer);
[context presentRenderbuffer:GL_RENDERBUFFER_OES];

この最後のアクションを元に戻すにはどうすればよいですか? 以前の状態または組み込みの OpenGL ES 関数を保存する方法が必要だと思います。

ありがとう

4

2 に答える 2

1

遅い答えはわかっていますが、他の誰かがこれに遭遇した場合に備えて、とにかくこれを投稿します。

また、touchesBegan および touchesMoved 呼び出しごとにポイントを配列に格納するオプションもあります。ここのように:

[currentStroke addObject:[NSValue valueWithCGPoint:point]];

touchesEnded の場合、これを次のような別の変更可能な配列に移動できます。

[allPoints addObject:allCurrentStroke];

次に、allPoints 配列を反復処理して、各サブ配列をレンダリング関数に渡します。この方法には、画像を保存する方法と比べて長所と短所があります。まず、ハード ドライブの容量を節約できますが、メモリを犠牲にします。GL_POINTS を使用すると、元に戻すボタンを押した後、画像を再描画するのに時間がかかることに気付くでしょう...しかし、最初のタッチまで簡単に元に戻すことができます! ですから、速度が必要か柔軟性が必要かによって異なります...元に戻すためのより良い方法があれば、教えてください!

于 2010-09-20T06:44:10.817 に答える
0

何かを描画し、アプリケーションのバンドルに画像ファイルとして保存するたびに、OpenGL ES コンテキストから画像を取得できます。これにより、アプリケーションの実行メモリが節約されます。

元に戻すを押すと、以前に保存した画像をコンテキストに描画するだけです。

ここで見つけることができるコンテキストから画像を取得する方法: http://www.iphonedevsdk.com/forum/iphone-sdk-development/35281-grab-image-opengl-es-context.html

于 2010-06-04T11:22:56.730 に答える