2012-03-28 3 views
1

QtのQGLFrameBufferObjectsに対する部分的な不透明度の単純な図形でさえも問題があります。私はこれまで問題が低下しているQGLFrameBufferObjectとスクリーンのレンダリング時にAlphaが合成されない

私はに設定された色でQGLFrameBufferObjectに簡単なクワッドをレンダリングするときは(1,0,0、0.5)、その後、画面にそれをブリット、I結果が50%の不透明度のために赤すぎます。同じ色(同じコード、実際には同じ色)で同じクワッドを画面に直接描画すると、正しい色の値が得られます。不透明度== 1.0のクォッドをレンダリングすると、結果は同じです...どちらの場合も完全な濃い赤色になります。 buffer.toImage()。save( "/ tmp/blah.tif")を使用してバッファをディスクに直接ダンプすることで、バッファ内の色が実際に間違っていることを確認しました。

どちらの場合も、操作を実行する前に出力バッファを(1,1,1,1)にクリアしました。

オフスクリーンバッファーに描画すると、スクリーンに描画するよりも、部分的に透明に描画されるものが軽くなるのはなぜですか?私はFBOや何かに設定する必要があるいくつかの状態が必要ですが、私はそれが何であるか把握することはできません。

答えて

3

アルファは「透過」を意味しません。それは何でも何も意味しません。 の場合はとすると意味があります。これは、透過性を制御するためにアルファを使用するブレンドモードを設定する場合にのみ、「透過」を意味します。したがって、set up a blend modecreates the effect of transparencyでなかった場合、アルファはまったく別の色成分であり、フレームバッファにそのまま書き込まれます。

+0

あなたの言うことが本当に私の問題の原因であるならば、私のブレンドモードは画面に描画するときに正しく設定されているが、オフスクリーンバッファに描画するときは正しく設定されていないということです。しかし、2つのケースの唯一の違いは、オフスクリーンのバッファを作成し、それを現在のコンテキストにバインドしていることです。だから私のブレンドモードは、あるケースでは正しく、他のケースでは間違っていると説明します。オフスクリーンバッファに特有のブレンドモードがあり、私の環境の他の部分とは独立して設定する必要がありますか? – Steve

+0

@Steve:「私のブレンドモードは、あるケースで正しく、他のケースで間違っていると説明します。」あなたのコードにバグがあります。しかし、コードを表示していないので、私は言うことができません。 –

関連する問題