1

状況:ビューポート(サイズ= 600 * 600)とカメラは一定のままで、さまざまな変換と回転を使用して、形状と対応するエッジ(ソーベルフィルターまたは独自のフィルターを使用)のNサンプルを生成します。つまり、N 個のサンプル + N 個の対応するエッジがあります。

このようにしようと考えているのですが、

2 つのレンダーバッファで 1 つの FBO を使用します [つまり、各バッファのサイズは = (N *600) * 600 になります]- N シェイプの場合は 1 つ目、対応するシェイプのエッジの場合は 2 つ目

質問:

  1. 上記のことを達成するための最良の方法はどれですか?
  2. ビューポートのサイズは 600*600 ピクセルですが、形状は約 50*50 ピクセルしか占有しません。バウンディング ボックス/AABB 領域のエッジ検出を 2 番目のバッファーのみに適用する効率的な方法はありますか? また、効率的な方法で 2N バウンディング ボックス (N サンプル + N 対応するエッジ) を読み取るだけですか?
4

2 に答える 2

1

Calvinが言ったように、最初にオブジェクトを最初のフレームバッファにレンダリングしてから、これをテクスチャとしてバインドする必要があります(レンダバッファではなくテクスチャアタッチメントを使用して)2番目のパスでエッジを見つけます.エッジ検出は通常、ピクセルの周囲のピクセル。

2 番目の質問については、おそらくステンシル バッファーを使用できます。最初のパスでシェイプを描画し、参照値をステンシル バッファーに書き込むだけです。次に、エッジ検出を行い (通常は、対応するフラグメント シェーダーを使用して画面サイズのクワッドをレンダリングします)、ステンシル バッファーに参照値が含まれている場所のみを通過するようにステンシル テストを構成します。このように (現在非常に一般的である初期の z ハードウェアを想定して) フラグメント シェーダーは、形状が実際に描画されたピクセルに対してのみ実行されます。

于 2011-05-28T01:50:06.097 に答える