0

私は単純な描画アプリケーションに取り組んでいます。私のラインはポリゴンを使用して構築されており、これまでのところ見栄えがします。透過機能を追加したいので使用glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);しました。ただし、ポリゴンがオーバーラップすることがあるため、図に示すように醜い結果が得られます (複数の透明レイヤー)。私が取得したいのは、全体的な透明度を備えた左の図です(透明度がないため、重なりはありません)。

ポリゴンが重ならないようにすることでこれを行うことができると思いますが、それはこのタスクにとってやり過ぎだと思います. 描画時にそれらを制御する方法があるはずですが、OpenGL の初心者には役に立ちません。

ここに画像の説明を入力

4

1 に答える 1

1

申し訳ありませんが、透明度の仕組みでは、ポリゴンが重ならないように手動で維持しないと、やりたいことができません。透明度が機能する方法は、その下の表面の色を取得し、指定したブレンド関数を使用してピクセルの最終的な色を計算することです。

あなたのプログラムでは、アルファを重ねて複数のポリゴンを描画しています。つまり、それらの色が加算され、表示される結果が得られます。

私は実際に描画アプリケーションを書いたことはありませんが、三角形のストリップを見て線を描くことができるかもしれません。これにより、ラインをポイントごとに延長し、ジオメトリがそれ自体と重ならないようにすることができます。

于 2012-09-26T12:39:40.813 に答える