2012-02-04 7 views
4

いずれか{GL_SRC_COLOR, xxx}とを指定する方法はあります{xxx, GL_DST_COLOR}ので、送信元と宛先の色が乗算されていること、またGL_SRC_ALPHA結果が{GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA} = 0である場合いることを確認しますか?OpenGLのブレンドGL_SRC_COLOR/GL_DST_COLOR

私のゲームの世界では、透明になるオーバーレイの四角形を作っていますが、時間が経つにつれて、オーバーレイはダークブルーとその下の色の組み合わせになります。

私は、以下に示す{GL_DST_COLOR, GL_ONE_MINUS_SRC_ALPHA}を試しました。どちらの写真でも、左側はオーバーレイなしの昼間、右側はオーバーレイ付きです。

夜の時間は右側に、オーバーレイとの完全なアルファでオーバーレイ(SRC)

1

デイタイムは0、アルファの右側にあります。

2

問題がゼロに等しいSRCアルファと宛先色が2倍になることです。オーバーレイなしの場合と同じままにしておきたいので、ゲーム中の不透明度と夜間の移行のみを調整できます。これを行う方法、または同じ効果を達成する別の方法がありますか?

答えて

3

解決しました。実際にアルファを使うよりも簡単です。私は、オーバーレイのためにこれを使用:

{GL_DST_COLOR, GL_ZERO} 

あなたは昼間を持っているときに{255,255,255}(白)に、あなたのオーバーレイの色を設定するので、最初に、あなたは、すべての任意の色の変化を望んでいません。アルファは使用されず、重要ではありません。この色に目的地の色(世界の背景)を掛けます。夜間に近づくにつれて、オーバーレイの色のみを調整することで、世界中の色を好みの色にすることができます。濃い青が必要な場合は、他のチャンネル(赤と緑)を下げて、目的地(青い背景)に比較的多くの青いチャンネルを残す必要があります。色は{120, 150, 200}に設定されています。

1

関連する問題