0

編集: GL_TRIANGLES の代わりに GL_POLYGONS を書きました。申し訳ありません。

2 つの結合されたベジエ曲線で構成される形状があります。内部点について GL_TRIANGLES を使用して塗りつぶそうとしています。結果は次のとおりです。

ここに画像の説明を入力

右側は GL_LINE_STRIP で表示された実際の形状です。
左側は、三角形の方法でポイントを与えた後の GL_TRIANGLES の後の結果です。

ご覧のとおり、曲がりくねった形状は消え、代わりに (ほぼ) まっすぐなエッジになっています。

どうすればこれを修正できますか?または、そのような形状を埋めるためのより良い方法でしょうか?

4

1 に答える 1

3

に提供されるものGL_POLYGONは凸状でなければなりません。あなたのオブジェクトは凹面です。

ある方向からアプローチすると、形状が常に凸状に見えることがわかっている場合 (たとえば、形状の場合、どの水平線も正確に 2 つの境界に当たると断言できます)、三角形のストリップとしてアプローチできます。

事前にポリゴンについて何も知らない場合は、テッセレーションを調べる必要があります。これは、任意のポリゴンを同じ領域をカバーする凸型ポリゴンのリストに縮小するための任意の数のアルゴリズムです。GLU にはテッセレータが含まれており、その簡単な使用方法については here で説明されています。三角測量に関するウィキペディアの記事では、独自のアルゴリズムを実装する場合に最も一般的なアルゴリズムが簡潔にまとめられています。プラットフォームに GLU がまだない場合は、Mesa が GLU のオープン ソース実装を提供しています。

于 2013-10-04T23:06:41.823 に答える