2016-03-28 3 views
2

次の図の(B)に示すような効果を得ようとしています。スプライトバッチにアルファを設定すると、(C)のような効果が得られます。誰も私が(B)のように希望の効果を得る方法を教えてもらえますか?libgdx 1つのスプライトのように複数のスプライトにアルファを設定する方法

enter image description here

私はスプライトをマスクするつもりはないよ注意してください。グローバルアルファが設定された後に描画されるすべてのスプライトに影響するグローバルアルファを設定しようとしています。使い方の例は、フェードインまたはフェードアウトするダイアログです。

+0

私がこれを行うために知っている唯一の方法は、すべてを完全不透明にしてFrameBufferに描画し、FrameBufferのテクスチャを部分透過で画面に描画することです。 – Tenfour04

+0

@ Tenfour04: "*完全な不透明度ですべてを描画する*"同じページにいることを確認するには、アルファを書き込む必要があります。あなたは*ブレンド*のためにアルファを使用していません。 –

+0

通常はブレンドとアルファを使用してそれらを描画しますが、アルファを下げた頂点カラーを使用することで最初のパスで不透明度を下げません。 – Tenfour04

答えて

1

あなたが求めているのは自明ではありません。結局のところ、三角形ごとのブレンドは、2つの別個のプリミティブが2つの別々のプリミティブです。 1つは他のものの後にブレンドされ、それらの間は接続されません。あなたが望むものを達成するために

のみ一般方法は、各オブジェクトのアルファ値を書き込み、別のフレームバッファにこれらのオブジェクトの合計をレンダリングすることですが、をブレンドせずに。別のフレームバッファにはアルファ成分が必要であり、書き始める前に0にクリアされているはずです。

別々のフレームバッファが完成したら、ブレンド(必要に応じていくつかのアルファが追加されている)を使用して1つのクワッドとしてレンダリングできます。

+0

こんにちは、pixmapsをテクスチャにレンダリングしてみました。これは必要に応じて機能しますが、メモリと時間に関して非常に高いオーバーヘッドを持ちます。フレームバッファは改善されますか? – user5207217

関連する問題