1

まず、誤解を避けるために、opengl es は三角形のみで動作します。

長方形 (三角形のストリップ) を取得しました。その長方形に丸い穴 (または複数の穴) をカットすることは可能ですか? それはすべて2次元です。

4

2 に答える 2

2

OpenGL では、実際のジオメトリの減算のようなものはサポートされていませんが、深度バッファーまたはステンシル バッファーのいずれかを使用して非常に簡単に偽装できます。

  1. 色をマスクして、カラー バッファーに何も描画されないようにします。
    glColorMask(false, false, false, false)
  2. シーンに「穴」を描画し、値を深度バッファー (三角形のストリップよりも小さい値) またはステンシル バッファーに入れます。

  3. カラー マスクを無効にしてから、深度テストまたはステンシル テストを有効にして三角形ストリップをレンダリングします。前に描いた領域がマスクされるため、中央に穴の開いた長方形が残ります。

于 2012-07-19T21:28:06.220 に答える
0

ティムのソリューションの代わりに、穴をカットするカスタム フラグメント シェーダーを使用することもできます。マスク テクスチャまたは (x,y) 座標と半径のみを使用して穴を定義できます。次にdiscard()、三角形の断片が穴の中にある場合は、単純にすることができます。最適な解決策は、必要な穴の数によって異なる場合があります (特に、非円形の穴も必要な場合は、マスク テクスチャが最も簡単で柔軟なアプローチになる可能性があります。穴が少ない)。

于 2012-07-20T08:23:58.260 に答える