1

LibGDXを使用して単純なペイントアプリに取り組んでいますが、使用しているセットアップで正しく「ペイント」するのに問題があります。私がこれを行おうとしている方法は、スプライトを使用して描画し、適切な場合はLibGDXのFBOコマンドを使用して、これらの個々のスプライトを背景テクスチャに追加することです。

私が抱えている問題は、ブレンドに関連する問題です。作成しているこのテクスチャにスプライトを追加すると、前に描画されたピクセルの上にあるスプライトの透明なピクセルが大幅に明るくなります。明らかにあまり良く見えません。以下は、「ブラシ」として緑>赤のグラデーションの円を使用した結果の様子です。上の行は現在、背景テクスチャの一部ですが、下の行はまだ純粋にスプライトで描画された形式のままです。

http://i238.photobucket.com/albums/ff307/Muriako/hmm.png

基本的に、各スプライトの透明な領域はその下のすべてを明るくしているので、完全に透明にする必要があります。私は多くの異なるブレンディングモードの組み合わせをいじり回しましたが、これ以上良いものを見つけることができませんでした。たとえば、GL_SRC_ALPHA、GL_ONE_MINUS_SRC_ALPHAにはこの問題はありませんでしたが、代わりに、各スプライトの透明なピクセルがアルファで低くなり、下のレイヤーの色の一部を帯びているように見えます。これはさらに厄介なようです。

リクエストに応じてコードスニペットを投稿できますが、これらの問題を修正しようとしてからコードが少し混乱しているため、必要なビットだけを追加したいと思います。

4

1 に答える 1

1

スプライトを描く順番は?アルファ ブレンディングは、ターゲットに既に存在するピクセルに対してのみ機能するため、正しい結果を得るには、アルファを含むすべてのもの (およびそれらの「背後」にあるものすべて) を Z オーダーで描画する必要があります。私は使用しています.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);

于 2012-07-31T18:05:44.227 に答える