Java libGDX-在图像周围创建边框

Java libGDX-在图像周围创建边框,java,textures,libgdx,Java,Textures,Libgdx,我可以在图像周围画一个边框吗? 我在2D中有很多块,当玩家将鼠标悬停在其中一个块上时,我想显示纹理/图像周围的边框 事实上,我就是这样画的(我认为这不相关,但可能会有帮助): 这是可能的代码,还是我应该做一个单独的图像和纹理周围的边界? 有什么想法吗?你可以试着先用a画边框,然后用batch.draw在上面画。这完全是在代码中完成的,没有使用纹理。下面的代码添加了一个蓝色边框 在render()中,在批处理.end()之后添加以下内容 当然,您需要在屏幕或ApplicationListener实

我可以在图像周围画一个边框吗? 我在2D中有很多块,当玩家将鼠标悬停在其中一个块上时,我想显示纹理/图像周围的边框

事实上,我就是这样画的(我认为这不相关,但可能会有帮助):

这是可能的代码,还是我应该做一个单独的图像和纹理周围的边界? 有什么想法吗?

你可以试着先用a画边框,然后用batch.draw在上面画。这完全是在代码中完成的,没有使用纹理。下面的代码添加了一个蓝色边框

render()
中,在批处理.end()之后添加以下内容

当然,您需要在
屏幕
ApplicationListener
实现中初始化ShaperEnder。只需在声明和初始化批处理的代码中执行此操作

在游戏课上:

SpriteBatch batch; //Put the following below this line
ShapeRenderer sr;
在构造函数中:

batch = new SpriteBatch(); //Put the following below this line
sr = new ShapeRenderer();

编辑:我重新编写了该函数,以便您可以在绘制纹理批次后绘制形状。

我推荐以下两种方法之一:

  • 为每个需要此悬停功能的图像制作两个不同的图像,一个带边框,一个不带边框;这就是按钮图像通常的实现方式——普通、按下、悬停或其他方式的单独图像
  • 如果您有许多不同但大小相同的图像(或您所说的“块”)需要此边框,那么如果您实现单个“边框纹理”,并在鼠标悬停在“块”上时将其与原始纹理一起渲染,则工作量和内存会减少

这是我个人的观点,但我从不喜欢libgdx中的形状渲染。我忘记了如何使用形状渲染器,但是如果您需要像nedR的回答中那样设置投影矩阵,我描述的方法也会更快。

在每个帧中创建
新颜色
,可能会导致内存泄漏,顺便说一句。此外,您应该继续批处理(
批处理.begin()
)在进行形状渲染后,以避免批处理绘制更多内容时出现裂缝:)谢谢,但我担心将所有投影矩阵设置为仅绘制边界会影响性能,对吗?也许兹利先生的主意更好,你觉得呢?@desertkun:是的。我猜不断地创建对象是你不想做的事情,尤其是在游戏编程中。最好避免在实际代码中这样做。只是必须把它放在我的示例代码中的某个地方来说明我的观点。@nedR ohh好吧,我试过了,结果非常顺利:D@IsraelG.I我猜使用第二个渲染器会有开销。我的回答只是说明了如何在纯代码中实现。在性能方面知识不足(尚未测试);但我可能会同意兹利先生的建议;它的解决方案更干净、统一,而且开销可能更小。
SpriteBatch batch; //Put the following below this line
ShapeRenderer sr;
batch = new SpriteBatch(); //Put the following below this line
sr = new ShapeRenderer();