2017-03-03 5 views
0

私は、選択された三角形を別の色のメッシュ上にレンダリングするのが最善の方法だろうと思っていましたか?私はOpenGLを使用していますが、特定のレンダリングシステムはそれほど重要ではないでしょう。選択した三角形を別の色でレンダリングしますか?

選択された三角形を既存のメッシュの上にレンダリングする方法がありますが、シェーダを使用してこれを行うより良い方法が必要だと思いますか?

答えて

1

私はこれを達成する最も簡単な方法は、あなたの三角形のための別のカラーバッファを作成することだと思います。続いて、glBufferSubData()(を参照)を使用して、選択解除された三角形の色を元に戻し、そのフレームで新たに選択された色を更新することができます。

これは、色を変更したい三角形の頂点がバッファ内のどのインデックスにあるのかを知っていることを前提としています。

追加のバッファにブール値のみが含まれ、選択された三角形の色を一様変数で指定された値で上書きすることもできます。

+0

これは、ラスタライズ時にプリミティブの補間を行いますが、選択された色に1または2の頂点が設定されていますか?そのようなカラーバッファはどのように表現/作成されますか? – zman

+0

頂点が元のモデルのバッファで再利用されている場合のみ。それらがすべて別々の頂点として定義されている場合は、問題はありません。これは残念なことにOpenGLの制限です。選択した三角形を視覚化しようとしているので、特定の三角形をマークするかどうかにかかわらず、多くの異なるブール値を追跡する必要があります。これを単一の均一なバッファに入れるのは実現不可能なので、三角形を分離し、単一のバッファを使用することは、私が知る限り最良の解決方法です。 – Bartvbl

+0

最初に元の頂点バッファとインデックスバッファを取り、インデックスバッファを使用して頂点バッファ内のすべての頂点をルックアップし、すべての頂点を新しいバッファに単一のシーケンスとして保存するという考え方です。すべての三角形の頂点が「個別の」頂点になっているので、それらの頂点ごとに個別の色を指定することができます。ここでは、実際に頂点ごとに1バイトしか必要ありません。別の頂点バッファを作成し、すべての値を0に初期化し、別の属性としてシェーダに追加します。その後、入力が1に設定されているかどうかをチェックし、そうであれば頂点の色を上書きします。 – Bartvbl

関連する問題