2016-04-19 3 views
-1

宛先ピクセル(バックバッファ)のアルファ値が0より大きい場合にのみ、ブレンド作業を行う機能/方法を探しています。宛先ピクセルのアルファ値が正の場合にのみ、Openglがブレンドされます。

私が探しているのは、入ってくるフラグメントをテストするglAlphaFuncのようなものですが、私の場合はバックバッファーにあるフラグメントをテストしたいのです。

アイデア?

ありがとうございました

ps私は描画関数でピクセル単位のテストを行うことができません。なぜなら、これはユーザーにコールバック関数として設定されているからです。

+0

あなたは 'glBendFunc'を試みたことがありますか? – Matso

+0

"*ブレンド作業をする" *を定義します。あなたはすでにブレンド機能を持っていますか?つまり、ソースと目的地の色を組み合わせているのですか、または目的地のアルファがゼロより大きいかどうかに基づいてソース色を条件付きで書きたいだけですか? –

+0

私は2番目の目標を達成しようとしています。これは、宛先アルファがゼロより大きいかどうかに基づいて条件付きでソースカラーを書き込むことです。私がやろうとしているのは、さまざまなテクスチャにバックバッファを保存し、ブレンド関数(GL_SOURCE_ALPHA、GL_ONE_MINUS_SOURCE_ALPHA)を使用してバックバッファ(おそらく他のもので再描画される)上に再描画することです。 – aftos

答えて

-1

申し訳ありませんが、私はコメントするのではなく、よりよく答えると思います。

そこで、例を挙げて説明します。

何かを(テーブルのようにユーザーが望むものであれ)描画しなければならないとしたら、(バッファを交換する前に)ブレンドを使用して「保存」テクスチャを描画する必要があります。

2つの透明なボックスを描画する必要があるとします。

  1. クリア(0、0、0、0)
  2. セットブレンド機能(GL_ONE、GL_ZERO)
  3. で画面を:これらのボックスは異なるテクスチャに保存する場合は、これをすることによって行うことができ
  4. 箱を描く
  5. テクスチャに保存します。今

ユーザーはそれらすべてを再描画しようとするたびに、彼は単にメインテーマ(テーブル)を描き、その上にブレンド機能(GL_SOURCE_ALPHA、GL_ONE_MINUS_SOURCE_ALPHA)を使用してテクスチャを描画します。

これは問題なく動作します。しかし、ユーザーが両方のボックスを1つのテクスチャに保存してボックスを重複させたい場合は、それらの2つのボックスのブレンドを "クリアされた"バックグラウンドとブレンドせずにどのように保存できますか?

要約すると、全体の絵画の最終イメージは、その上に機能(GL_SOURCE_ALPHA、GL_ONE_MINUS_SOURCE_ALPHA)が混在した2つのボックス(黄色と緑色のボックス)を持つ表にする必要があります。

関連する問題