2016-03-28 55 views
2

我試圖達到如下圖(B)所示的效果。如果我在Sprite Batch上設置了alpha,那麼結果如(C)所示。任何人都可以請告訴我如何獲得(B)中的預期效果。libgdx如何在多個精靈上設置alpha,就像它是一個精靈一樣

enter image description here

請注意,我並不想掩蓋的精靈。我試圖設置一個全局alpha,它會影響全局alpha設置後繪製的所有sprites。用法的一個例子是淡入或淡出的對話框。

+0

我知道這樣做的唯一方法是將它們全部以不透明的方式繪製到FrameBuffer上,然後在部分透明度下將FrameBuffer的紋理繪製到屏幕上。 – Tenfour04

+0

@ Tenfour04:「*以完全不透明的方式繪製所有圖片*」爲了確保我們在同一頁面上,您仍然需要*寫入* alpha。你只是沒有使用alpha來進行* blending *。 –

+0

我的意思是說你通常使用混合和alpha來繪製它們,但是不要在第一次使用降低alpha的頂點顏色時減少它們的不透明度。 – Tenfour04

回答

1

你要求的是不平凡的。畢竟,基於每個三角形的混合工作,以及兩個獨立的基元是兩個單獨的基元。一個會混合在一起,兩者之間沒有任何聯繫。

唯一一般的方式來實現你想要的是總和這些對象的渲染到一個單獨的幀緩衝,寫每個對象的Alpha值,但不配合。請注意,單獨的幀緩衝區應該有一個alpha分量,並且在開始寫入之前它應該被清除爲0。一旦你完成了單獨的幀緩衝區,你可以使用混合(使用一些添加的alpha,如你所願)將它渲染爲一個單一的四邊形。

+0

嗨,我已經嘗試使用渲染到紋理的像素圖。這可以按需要工作,但是在內存和時間方面會有很高的開銷。幀緩衝器是一種改進嗎? – user5207217

相關問題