8

少し前に、ダブル バッファリングされると言われている OpenGL ガイドブックのプログラムを試してみました。画面に回転する長方形が表示されました。残念ながら、私はその本をもう持っておらず、一般的なバッファーとは何かについての明確で直接的な定義も見つけていません。私の推測では、それはものを描くための「場所」であり、多くを使用することはレイヤー化のようなものでしょうか?

その場合、複数のバッファをポリゴン クリッピング プログラムに有利に使用できるかどうか疑問に思っています。ユーザーが画面上にポリゴンを描画できる素敵な小さなウィンドウと、ポリゴン上に選択ボックスをドラッグして描画するユーティリティがあります。ユーザーが選択用の四角形を描画してマウスを放すと、四角形の境界に基づいてポリゴンが切り取られます。

これで十分ですが、ユーザーが最初からやり直すこともできるようにしたいと考えています。エスケープ キーを押すと、クリップ ボックスが消え、元のポリゴンが復元されます。私はピクセルごとに物事を行っているので、長方形のピクセルの色を、描画された場所に応じて、背景のような黒または特定のポリゴンの色に戻す方法を理解するのは非常に難しいようです (見つけた場合を除きます)。各ポリゴン ピクセルが描画されるときに色を保存する方法ですが、それはやり過ぎのようです)。簡単にクリアできる一種の透明なレイヤーのように機能することを期待して、長方形に独自のバッファーを与えるのに役立つかどうか疑問に思っていました(?)これはバッファーを使用できる方法ですか、それとも必要ですか?別の解決策を見つけるには?

4

1 に答える 1

11

OpenGL は、複数の種類のバッファーを認識します。

  • フレームバッファ: バッファ内のピクセル値を変更する描画操作が指示されるメモリの部分。デフォルトでは、OpenGL には画面上のバッファがあり、フロント バッファとバック バッファに分割できます。描画操作はバック バッファで非表示で行われ、終了時にフロントにスワップされます。それに加えて、OpenGL は深度テスト Z ソートの実装に深度バッファを使用します。ステンシル バッファは、レンダリングをフレーム バッファの選択された部分のようなカットアウト (=ステンシル) に制限するために使用されます。以前は、補助バッファーと蓄積バッファーがありました。ただし、これらは、ユーザーが作成したオブジェクトである、いわゆるフレーム バッファ オブジェクトによって置き換えられ、いくつかのテクスチャまたはレンダ バッファを組み合わせて、レンダリング可能な新しいフレーム バッファにします。

  • Renderbuffers: ユーザーが作成したレンダー ターゲットで、フレーム バッファー オブジェクトにアタッチされます。

  • バッファ オブジェクト (頂点とピクセル): ユーザー定義のデータ ストレージ。ジオメトリと画像データに使用されます。

  • テクスチャ: テクスチャは一種のバッファです。つまり、データを保持し、描画操作のソースにすることができます

OpenGL での通常のアプローチは、何かが変更されるたびにシーン全体を再レンダリングすることです。これらの描画操作を保存したい場合は、フレーム バッファの内容をテクスチャにコピーし、そのテクスチャを 1 つのクワッドに描画して、選択したラバーバンドの長方形で上書きします。

于 2012-10-15T00:20:44.137 に答える