4

コンポーネントごとに 1 つのアルファ チャネル (赤用、緑用、青用) を使用してブレンドを OpenGL で実行することは可能ですか? そうでない場合、考えられる回避策は何ですか?

4

4 に答える 4

2

これは直接サポートされているものではありません。ただし、自分で達成するのはかなり簡単です。

  • 3チャンネルの「アルファ」テクスチャを使用して三角形(または何でも)をレンダリングし、glBlendFunc(GL_ZERO, GL_ONE_MINUS_SRC_COLOR)
  • マルチテクスチャを有効にして「アルファ」テクスチャを設定し、RGB テクスチャを調整します
  • で三角形をレンダリングしますglBlendFunc(GL_ONE, GL_ONE)
于 2010-05-12T11:46:11.637 に答える
1

ピクセル シェーダーを使用してこれを行うこともできますが、コンポーネントごとのアルファ値を保存/アクセスする方法を見つける必要があります。それらをテクスチャに保存し、通常の色成分を対応する色のアルファ値として扱うことができます。

どのような効果/アウトプットを達成しようとしていますか?

于 2010-05-12T11:51:50.297 に答える
0

あなたが説明していることは、OpenGL では不可能です。

そうは言っても、あなたが OpenGL を初めて使用することを考えると、おそらくあなたが説明していることは、あなたが求めているものとまったく同じではないでしょうか?

ブレンディングは、現在のフラグメント (通常は三角形に由来する) の色を決定した後に発生するステップです。その色は、フレーム バッファ内の前の色とマージする必要があります。それがあなたが求めているものだと確信していますか?

于 2010-05-12T11:46:50.683 に答える