0

GPU や OpenGL グラフィックス パイプラインで NURBS がどのようにレンダリングされるのか興味があります。glMapとglMapGridを使用してコーディングの観点からNURBSオブジェクトを簡単にレンダリングするために、OpenGLとGLUT内にさまざまな呼び出しがあることは理解していますが、OpenGLがこれを行うために通過するプロセスはわかりません。NURBS の背後にある考え方は、カーブを使用してサーフェスを定義することです。一方、グラフィックス パイプラインは三角形のラスタライズと三角形のメッシュを中心に構築されているように見えますが、NURBS は曲線であるベジエ曲線に基づいています。

では、(高レベルの) パイプラインの観点から、NURBS は実際にどのようにレンダリングされるのでしょうか?

4

1 に答える 1

5

簡単な答えは、OpenGLパイプラインでは処理されないが、GLパイプラインが処理できるものに変換する必要があるということです。一般的なアプローチは、おそらく最初にベジェパッチなどのもう少しリアルタイムに適したプリミティブに変換し、次に実行時にこれらを三角形にテッセレートすることです。

テッセレーションは、グリッドをパッチにマッピングする規則的なものにすることも、曲率に基づいて、分散が大きい場合にパッチをさらに細かく分割することもできます。いずれにせよ、サーフェスは一部の頂点でのみ真に評価され、フラットポリゴンとしてレンダリングされます(ただし、シェーダーを使用して、適切に滑らかに変化する法線などを作成できます)。

glMap()et-al(以前はベジェパッチなどのレンダリングを支援するために使用されていました)は非推奨になり、最新のOpenGLAPIには存在しなくなりました。最近では、テッセレーションを処理するためにシェーダーを使用します。

于 2013-02-16T09:38:32.100 に答える