【问题标题】:libgdx Cutting an imagelibgdx 剪切图像
【发布时间】:2026-02-04 18:40:01
【问题描述】:

一段时间以来,我一直在尝试“剪切”图像,我将解释为什么以及我尝试了什么。 所以我想创建一个 hp “bar”,但它不是一个 bar,而是一个心,所以我虽然这很容易,但我所要做的就是让两张图片将它们画在彼此的顶部,然后剪下一张来制作它显示为 hp 正在丢失,但我无法找到剪切图像的方法。

  • 设置高度只是调整图像的大小,您可能已经猜到了
  • 我尝试使用 textureRegion 来破解它,但效果不佳
  • 我发现了一种名为 clip begin 的方法,它也使用剪刀,但由于某种原因,它似乎不起作用。

我可能使用的剪辑开始错误,但我真的找不到任何真正的文档,我正在做的只是:

image.clipBegin(x,y,height,weight);
image.clipEnd();

我差点忘了,我使用的是 scene2d 图像,可能是更好的解决方法,但不确定会是什么。

如果有任何关于如何做到这一点的想法,我将不胜感激,谢谢。

【问题讨论】:

    标签: java image libgdx crop clipping


    【解决方案1】:

    您想使用 Libgdx 公开的 OpenGL Scissor 支持。见Libgdx Clipping wikiLibgdx ScissorStack documentation

    API 不是特别友好(它旨在支持动态推送多个约束矩形,据我所知,它并不经常使用)。

    使用剪刀堆栈要记住的重要一点是,它仅适用于发出的实际绘制命令。由于大多数 API 尝试批量绘制命令,这意味着实际绘制可能不会在看起来应该发生的时候发生。为确保发生剪裁,您必须在推动剪刀之前刷新所有缓冲的绘图(否则可能会剪裁错误的东西),并且您必须在弹出剪刀之前冲洗任何绘制调用(否则您想要剪裁的东西可能会避开剪刀)。

    参见libgdx ScissorStack not working as expectedlibGDX - How to clipHow to draw on just a portion of the screen with SpriteBatch in libgdx?Making a Group hide Actors outside of its bounds

    【讨论】: