2016-03-28 36 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

相关问题