次のプロセスがあります。
- draw background
- draw objects and blend with background (1)GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA
- draw particle effect with blending (2)GL10.GL_SRC_ALPHA, GL10.GL_ONE in order to highlight overlapping particles
問題 - パーティクルを描画すると、パーティクルが背景とブレンドされて非常に明るくなります。
私が必要としているのは、(2) を使用してパーティクルをブレンドし、(1) を使用して背景とブレンドすることです。
機能しないソリューション:
- テクスチャに効果を描画し、それを適用するよりもうまく機能します...しかし非常に遅いです。
- 最初にパーティクルエフェクトを描画し、背景よりもうまく見えます...しかし、背景とエフェクトの間にある必要があるため、シーンオブジェクトを描画できません
これが違いを示す画面です。右は目的の結果、左はパーティクルが背景とブレンドされています。
画像:
どんな助けにも感謝します...
最新の更新: 必要な色を取得できました...しかし... (この方法ではどこにも移動しないようです) 背景をアルファ = 0 でレンダリングし、GL11Ext のブレンド関数を使用しました: glBlendFuncSeparate(GL10.GL_SRC_ALPHA, GL10.GL_DST_ALPHA、GL10.GL_ONE、GL10.GL_ONE);
GL10.GL_SRC_ALPHA、GL10.GL_DST_ALPHA - アルファがある場合にのみ色がブレンドされます (bg は現在ありません)。
GL10.GL_ONE、GL10.GL_ONE - 加算ブレンドをシミュレートするために、書き込まれたすべてのパーティクルのアルファが最大に設定されます
ご覧のとおり、正常に動作します...粒子画像のアルファ 0 を持つ黒色の塗りつぶし領域を除いて..結果の画像では黒色がアルファ 1 であるため、それを置き換えることができません...
EDIT_2 簡単な言葉で言えば一般的な問題: 赤 (0xff0000) の光る (加算ブレンド) 効果を描画する必要があります。黒の背景では問題ありませんが、緑 (0x00ff00) を使用すると、結果の色は 0xffff00 に近くなります。
何か案は?