2011-01-20 23 views
0

レンダリングを収集してテクスチャに配置する「ポストプロセッシングパイプライン」を構築します。すべての後処理エフェクトがレンダリングされた後、私はすべての結果をまとめます。そして、ここに私の問題があります:OpenGLレンダリングにテクスチャ透明度問題

最初に、私はglClearColor(0,0,0,0)でバッファをクリアします。それから私はドローコールを呼び出します。オブジェクトが0.5アルファのテクスチャを持つときに来る。この結果、背景色とテクスチャが混在します。私はこのミックスを避けたいと思います。たとえば、テクスチャのピクセルが0.5,0.5,0.5,0.5の場合、透明度がゼロの黒い背景が影響を受けるため、結果は0.25,0.25,0.25,0.5です。

私はレンダリング結果をglCopyTexImage2D関数を使ってテクスチャにします。フレームバッファの使用に関する記事を読んでいますが、複数のフレームバッファを使用して問題を解決できるかどうか確認したいと思います。

私にアドバイスがありますか?

答えて

2

描画時に事前乗算されたアルファを使用してみることができます。基本的に、すべての色の値がで、すでににアルファ値を掛けていることを確認してください。その後、代わりに

glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 

のあなたは、テクスチャのピクセルが、その後0.25、0.25、0.25、0.5になり

glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA); 

を使用します。結果は0.25、0.25、0.25、0.5となります。これはすべて1で乗算されるためです。もちろん、結果の出力テクスチャが再び事前乗算されたアルファを持つと正しく解釈されるようにする必要があります。

ウィキペディアのdusty cornerにはかなり良い説明があります。

+0

ありがとうございました。私は今夜​​それとも明日にそれをチェックし、あなたに結果を与えるでしょう。 – plucked

関連する問題