0

こんにちは、私はペイントブラシのようなものを作っていましたが、これでいくつかの基本的な形を描きます。glcontrol元に戻すオプションを追加したいのですが、これがどのように機能するのか本当にわかりません。ヒントを教えてください。

4

1 に答える 1

3

最初に理解すること:OpenGLは単なる描画APIです。描画コマンドを送信すると、ターゲットフレームバッファの一部のピクセルの色が変更されます。OpenGLには、ジオメトリを操作可能なオブジェクトに抽象化する高レベルの機能はありません。これはシーングラフが行うことです。

元に戻す/やり直しの履歴では、すべての描画操作を別の構造に保存する必要があります。たとえば、描画操作のリンクリストなどです。

新しい操作はそれぞれリストに追加されます。元に戻すには、手順をさかのぼって実装します。いくつかの元に戻す手順の後に新しい操作を行うと、テールが破棄されて新しいテールが作成されます。

OpenGL側では、Undo / Redoの後にリスト全体を再描画するか、ステップごとにフレームバッファの状態を保存することができます。ただし、これは多くのメモリを消費するため、違いだけを保存し、いくつかの単純な圧縮スキーム(ランレングスとタイルへの事前のセグメント化)を使用すると、メモリを節約できます。

于 2011-04-26T21:59:37.173 に答える