2017-02-13 6 views
-1

ここには、すべてのGISアプリケーションで実行できるタスクがあります。いくつかのポリゴンを指定すると、選択した色で各ポリゴンを塗りつぶします。このように:imageOpenGL:世界地図を着色していますか?

これをOpenglで繰り返し行う最良の方法は何ですか?つまり、ポリゴンは変更されません。異なるレンダリングを作成するために、色分けするためにデータを変更したいと考えています。

レンダリングごとにポリゴンを再描画するのが最も簡単な解決策ですが、ジオメトリがまったく変更されないため、無駄に思えます。

または、ポリゴンごとにステンシルを作成し、マップ全体をステンシルで印刷する方が良いですか?あまりにも多くのポリゴンがある場合、数百または数千のレンダリングパスで問題が発生しますか?

答えて

0

シェイプにデータを送信するときに、各呼び出しで頂点配列オブジェクトが2つのパラメータを送信することを意味します:頂点シェーダで必要なベクトルとベクトルフラグメントカラーとして使用されます。これが最も簡単な方法です。

たとえば、openglで描かれた三角形を考えてください。頂点が頂点シェーダに送信され、頂点がシェーダパイプラインに入るたびに、フラグメントシェーダで色を設定すると、それに応じて、またフラグメントシェーダからの指定された色で設定されたスクリーン上に配置されます。

色が補間されている色付きの三角形の例では、説明がわかりにくいテクニックが使用されています。隅に赤が描画され、緑が別の色にマップされ、青が最後に描画されます。赤い色がすべてのコーナーにマッピングされるように設定すると、色付きの三角形が得られます。基本原理です。三角形の最小数を描画し、シェーダを1組必要とします。 注:ポリゴンはN個の三角形から作成され、そのポリゴンに描画された各三角形の各頂点に同じ色をマッピングする必要があります。

0

もっと大きな問題は、OpenGLがポリゴンやベクトル描画を一般的にサポートしていないことですが、これにはライブラリがあります。ベクトル描画に既存のソリューションを使用する必要があります。そうでない場合は、GISデータ(通常はポリゴンの点のリスト)を三角形に変換する必要があります。これはおそらく最大の障害です。

ジオメトリが変更されないということは、実際には問題ではありません。通常、ジオメトリを1つ以上のバッファに格納し、視点領域内に表示されているものを描画するロジックを作成します。可視領域のジオメトリを生成するだけです。

この質問とその回答も参照してください。

Rendering Vector Graphics in OpenGL?

関連する問題