3
我是LibGDX和OpenGL的新手,但我设法使用Box2D API进行了简单的液体模拟。请参阅此链接(这是谁家的其他动画):使用LibGDX绘制液体
目前我使液体颗粒圆,就像在第一幅图像,但我想使它看起来更自然喜欢上了第三个。
答案可能是使用距离场,我试过这种方法,但没有效果。我使用SpriteBatch类将每个粒子绘制为纹理,但可以更改。我做了一个纹理(来自程序Pixmap),它将每个粒子表示为实心圆,Alpha通道从中心进一步减小,所以效果与第二张图相似。
现在,我必须对alpha通道启用阈值过滤器,如下所示:“仅绘制alpha> 0.5的像素”。这是后处理步骤,因为在所有粒子被绘制之后,重要的是像素的alpha通道是什么。可能会或可能不会使用着色器(ProgramShader),但经过一些研究后,我仍然不知道如何做到这一点。谢谢你的帮助。
编辑:this示例解释了该方法,但它在ActionScript中实现。
我没有尝试过,但问题是,这掩盖了每个图像的阿尔法。因此,如果我绘制100个“减少阿尔法半径”的圆圈和alpha> 0.5的蒙版,我得到的只是100个小圆圈,因为每个蒙版都是独立完成的。相反,我需要先用alpha绘制所有圆,让它们混合,然后应用alpha蒙版。目前正在研究模板和FrameBuffer类。 – vic