2014-01-08 70 views
3

我是LibGDX和OpenGL的新手,但我设法使用Box2D API进行了简单的液体模拟。请参阅此链接(这是谁家的其他动画):使用LibGDX绘制液体

Physics Liquid

目前我使液体颗粒圆,就像在第一幅图像,但我想使它看起来更自然喜欢上了第三个。

答案可能是使用距离场,我试过这种方法,但没有效果。我使用SpriteBatch类将每个粒子绘制为纹理,但可以更改。我做了一个纹理(来自程序Pixmap),它将每个粒子表示为实心圆,Alpha通道从中心进一步减小,所以效果与第二张图相似。

现在,我必须对alpha通道启用阈值过滤器,如下所示:“仅绘制alpha> 0.5的像素”。这是后处理步骤,因为在所有粒子被绘制之后,重要的是像素的alpha通道是什么。可能会或可能不会使用着色器(ProgramShader),但经过一些研究后,我仍然不知道如何做到这一点。谢谢你的帮助。

编辑:this示例解释了该方法,但它在ActionScript中实现。

回答

1

这可以很容易地使用着色器来完成,但有趣的是你不需要写它们。

“绘制只有alpha> 0.5的像素”也用于渲染距离场字体(字体在放大时看起来很好)。

希望这会有所帮助。

+1

我没有尝试过,但问题是,这掩盖了每个图像的阿尔法。因此,如果我绘制100个“减少阿尔法半径”的圆圈和alpha> 0.5的蒙版,我得到的只是100个小圆圈,因为每个蒙版都是独立完成的。相反,我需要先用alpha绘制所有圆,让它们混合,然后应用alpha蒙版。目前正在研究模板和FrameBuffer类。 – vic