2011-05-18 11 views
6

glBlendFuncは、ピクセルブレンドモードを指定する関数呼び出しです。PhotoshopのようなスクリーンモードでピクセルをOpenGLでどのようにブレンドするのですか?

式I Aはソース画素である

C = A * B 

となっているフォトショップ、のようMultiply Modeを行うことができ、Bは、宛先ピクセルであり、Cは、最終的な結果です。

glBlendFunc(GL_DST_COLOR、GL_ZERO)私はその効果を得るでしょう。

ここで私の質問はどのように使用するのですかScreen Mode?その式は次のとおりです。

C = 1 - (1 - A) * (1 - B) 

答えて

7

チェックはしていませんが、行く方法は次のとおりです。

ビルトインのOpenGLのように見えるを行い、計算:あなたはsおよびdを選択することができます

C = A*s + B*d 

いくつかの代数は私たちに

C = 1 - (1 - A) * (1 - B) = 
    = 1 - (1 - B) + A*(1 - B) = 
    = A*(1 - B) + B 
を与える

s = 1 - B 
d = 1 

ましょうと、私たちは私たちが望む値を取得します。これはうまくいくはずです:

glBlendFunc(GL_ONE_MINUS_DST_COLOR, GL_ONE); 
+0

代数!私はそれを完全に忘れる!ありがとう、素晴らしい答え。 – trVoldemort

関連する問題