我在游戏中创建菜单,特别是带圆角和边框的矩形。我可以使用形状渲染器执行此操作,但我不能混合形状渲染器和精灵批处理器。目前我的分辨率似乎是使用大型形状作为PNG并缩放它们但是在很多设备上会产生模糊的角落。
我已经阅读了关于网格物体,着色器的教程,使用精灵批处理后的形状渲染器(复杂化层和性能影响),9补丁(边框变得模糊,无法正确进行渐变)< / p>
在android中它很简单,我们只是用XML定义形状,它创建了一个很好的清晰形状示例:带边框和渐变的圆角矩形。
有没有人可以给我一些建议,我将如何使用渐变创建一个圆角矩形,最好是一些易于使用的实现,可以在可重用的类中使用。
答案 0 :(得分:5)
您可以将形状绘制到PixMaps,然后从它们创建TextureRegions以使用SpriteBatch进行渲染。
工具集有点基础,但您可以从另一个PixMap绘制点,线,三角形,圆形,矩形,填充或绘制区域。
您可以通过绘制两个重叠的矩形和每个角的圆圈来绘制圆角矩形。
PixMap myPixMap = new PixMap(desiredWidth, desiredHeight, pixmapFormat);
myPixMap.setColor(myColor);
myPixMap.fillRectangle(x, y, width, height);
TextureRegion myTextureRegion = new TextureRegion(new Texture(myPixMap));
答案 1 :(得分:0)
你应该看看9个补丁。你的用例应该与9个补丁完全相同。因此,您必须制作一个由9个区域组成的图形,这些区域可以分开。
在您的情况下:4个角的 4 区域, 4 区域代表您的矩形边缘和 1 中心区域。 请记住,边缘区域和中心区域将根据矩形的大小进行拉伸,这就是为什么不应该使用重复模式的原因。但水平或垂直渐变应该可以正常工作。
您只能将它们与spriteBatch一起使用。应该没有模糊的线条,因为图形的圆角将具有足够好的分辨率。
这是libgdx 9patch的链接: https://github.com/libgdx/libgdx/wiki/Ninepatches
这是一张图片,显示九个补丁基本上是如何工作的: http://radleymarx.com/blog/wp-content/uploads/2011/05/scalable-area.png