2011-01-13 10 views
0

私はOpenGLでいくつかのオブジェクトを持っており、選択したオブジェクトをマークしたいと思います。私の考えは、選択された色を追加するためにGLSLシェーダを使用することでした。 フラグメントシェーダーでピクセルの「元の」色を取得するにはどうすればよいですか? テクスチャで色を見ることができますが、複数のテクスチャがある場合は?オブジェクトをカラー化するための一般的なGLSLシェーダーの書き方

答えて

0

選択したオブジェクトを特定のシェーダでレンダリングする場合は、オブジェクトの通常のレンダリング(ライティング、テクスチャリングなど)と同じ動作をするシェーダを作成する必要があります。つまり、ピクセルの色を自分で計算する必要があります。

オブジェクトをすべてレンダリングしてから選択を追加する場合は、フラグメントシェーダからフレームバッファのピクセルの色を取得することはできません(フレームバッファからテクスチャを作成して使用する必要があります。しかし、それは範囲外です、と私は思います)。

0

オプションA)現在の拡散色/テクスチャに色を追加し、そのフラグメントシェーダを選択したものにのみ適用することができます。 color = ... gl_FragColor = mix(color、selectioncolor、0.5);

オプションB)あなたは

オプションをフレームバッファにレンダリングして、色を追加するオブジェクトをpostproccessシェーダを変更すると、オブジェクトを識別するためにあなたの能力に依存します。

関連する問題