【问题标题】:Drawing liquid with LibGDX使用 LibGDX 绘制液体
【发布时间】:2014-01-08 12:02:26
【问题描述】:

我对 LibGDX 和 OpenGL 还很陌生,但我设法使用 Box2D API 进行了简单的液体模拟。看这个链接(这是别人的动画):

Physics Liquid

目前我将液体粒子渲染为圆形,就像在第一张图片中一样,但我想让它看起来更自然,就像在第三张图片中一样。

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

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

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

【问题讨论】:

    标签: java rendering libgdx


    【解决方案1】:

    这可以使用着色器轻松完成,但有趣的是您不需要编写它们。

    “仅绘制 alpha > 0.5 的像素”也用于渲染距离场字体(即使放大后看起来也不错的字体)。

    希望这会有所帮助。

    【讨论】:

    • 我确实尝试过这个,但问题是这会掩盖每个图像的 alpha。因此,如果我绘制 100 个带有“半径减小 alfa”的圆圈并为 alpha > 0.5 蒙版,我得到的只是 100 个较小的圆圈,因为每个蒙版都是独立完成的。相反,我需要先用 alpha 绘制所有圆圈,让它们混合,然后应用 alpha 遮罩。目前正在研究模板和 FrameBuffer 类。
    猜你喜欢
    • 2015-07-20
    • 1970-01-01
    • 1970-01-01
    • 2013-08-03
    • 2017-09-18
    • 2011-12-16
    • 1970-01-01
    • 1970-01-01
    • 2021-09-04
    相关资源
    最近更新 更多