0

レンダーコールを収集してテクスチャに入れる「後処理パイプライン」を構築します。すべての後処理効果がレンダリングされた後、すべての結果をまとめます。そして、ここに私の問題があります:

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

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

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

4

1 に答える 1

2

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

glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

あなたが使うだろう

glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);

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

ウィキペディアのほこりっぽいコーナーにかなり良い説明があります。

于 2011-01-20T17:50:20.447 に答える