まず、誤解を避けるために、opengl es は三角形のみで動作します。
長方形 (三角形のストリップ) を取得しました。その長方形に丸い穴 (または複数の穴) をカットすることは可能ですか? それはすべて2次元です。
まず、誤解を避けるために、opengl es は三角形のみで動作します。
長方形 (三角形のストリップ) を取得しました。その長方形に丸い穴 (または複数の穴) をカットすることは可能ですか? それはすべて2次元です。
OpenGL では、実際のジオメトリの減算のようなものはサポートされていませんが、深度バッファーまたはステンシル バッファーのいずれかを使用して非常に簡単に偽装できます。
glColorMask(false, false, false, false)
シーンに「穴」を描画し、値を深度バッファー (三角形のストリップよりも小さい値) またはステンシル バッファーに入れます。
カラー マスクを無効にしてから、深度テストまたはステンシル テストを有効にして三角形ストリップをレンダリングします。前に描いた領域がマスクされるため、中央に穴の開いた長方形が残ります。
ティムのソリューションの代わりに、穴をカットするカスタム フラグメント シェーダーを使用することもできます。マスク テクスチャまたは (x,y) 座標と半径のみを使用して穴を定義できます。次にdiscard()
、三角形の断片が穴の中にある場合は、単純にすることができます。最適な解決策は、必要な穴の数によって異なる場合があります (特に、非円形の穴も必要な場合は、マスク テクスチャが最も簡単で柔軟なアプローチになる可能性があります。穴が少ない)。