0

私はOpenGLプロジェクトに参加しています。

同じ透明な素材(たとえば、アルファ= 0.2)で作られたオブジェクト(たとえば2)がいくつかあります。2つのオブジェクトが交差します。

交差部分を他の部分と同じように(境界線なしで、異なる色なしで)表示して、オブジェクトも1つのように見えるようにするにはどうすればよいですか?

4

1 に答える 1

1

あなたが本当にそれをしたいかどうかはわかりません。とにかく答えますが、まず、なぜあなたがそれを望まないと思うのかをお話ししましょう。

実生活では、赤いステンドグラスと青いステンドグラスを想像してみてください。部分的に重なるように見ると、重なっている部分の色(紫)が明らかに異なります。赤いメガネを2つ手に入れて、重なるように見ると、重なっている部分がより赤くなります。それはまさにあなたのOpenGLプログラムで起こっていることです。

一般に、複数の透明なオブジェクトがある場合は、目からの距離と見ている方向に基づいてオブジェクトを並べ替える必要があります。次に、それらを最も遠いものから最も近いものへと描画します。これはそれ自体では簡単な作業ではありません。交差する2つのオブジェクトについて考えてみてください。

目的を達成する1つの方法は、透明なオブジェクトを並べ替えることですが、最も近いオブジェクトから最も遠いオブジェクトに描画します。このように、実際には、同じピクセルの透明度を2回実行することはできません。良い考えではありません。

別の方法は、これらの特別な種類のオブジェクトに非常に固有のことを行うことです。どうやら2つが重なっても変化がないので、特別な種類と言います!描画バッファの代わりにステンシルバッファに描画し、画面全体に希望の色で長方形を描画しますが、そのステンシルのみを一致させることで、必要な操作を実行できます。

于 2012-05-01T13:02:56.973 に答える