2011-07-20 9 views
0

私はiPhoneでOpenGLとプログラミングを使用しています。添加剤ブレンドを使用していても、バックグラウンドに対して同じ色を維持するにはどうすればよいですか?

私はゲームシーンの上に輝く「ビーム」を描いています。私は、グロー効果を作るために、いくつかのテクスチャに添加剤ブレンディングを使用しています。ビームが純粋な黒の背景にレンダリングされている場合、ビームは私が望むのとまったく同じように見えますが、ビームが私の絶え間なく変化するゲームでレンダリングされると、ビームは後ろの色と混ざります。

1)テクスチャにビームをレンダリングし、通常のブレンドを使用して背景にテクスチャを描画:

は現在、これは私だけの考えです。

問題 - テクスチャは常に不透明です(黒は私のglClearカラーです)。私はレンダリングされたテクスチャからすべての黒を取り除く方法はまだ分かりません。

提案がありますか?

答えて

1

アルファチャンネルのテクスチャにレンダリングし、それをブレンドすることができます。しかし、これはあなたの梁の外観を再び変えるでしょう。ブレンドは常に外観の変化をもたらしますが、これを回避することはできません。

ブレンド式が

Destination = Incoming * Incoming_Blend_Factor + Original * Original_Blend_Factor 

あなたの色が同じになるようにしたい場合は、これは

係数の比較ですによって

Destination = Incoming * 1 + Original * 0 

すなわちである、

Destination = Incoming 

に相当しています全くブレンドしないでください。バックグラウンド層とその上の層にあなたのビームにPhotoshopやGIMPではなく、いくつかの背景画像:私はあなたに次を与える練習として


。次に、使用可能なブレンドモードを調整して、望む結果を得ようとします。

+0

ありがとうございます。私がやったことは、アルファブレンディングを使って、光沢のある光線をレンダリングして、光沢感に見えるようにすることでした。私は通常のブレンドを使用してそのテクスチャを私のバックグラウンドにレンダリングできると思っていましたが、残念ながらこれはそうではありません - ビームはまだバックグラウンドにブレンドされていました。 私の究極の目標は、バックグラウンドとブレンドすることなくどこでも描画できる発光ビームを作成することです。何か案は? – 3rdFunkyBot

+0

これについて考えてみましょう。あなたの背景が明るい(おそらく空が見える窓)の場合はどうでしょうか?特に発光ビームは常にブレンドを必要とする。それはあなたがアルファテストを使用することができるいくつかの不透明なものでしたが、それは背景が輝くことはありません。最終的には、フレームバッファ内のピクセルの彩度が問題になります。 HDRレンダリングを使用することもできますが、これは最終的な合成ステージでビームが過度に露出するのを助けません。 – datenwolf

関連する問題