我想用shaperenderer绘制一个戒指(带有大边框的圆圈) .
我试过两种不同的解决方案
-
解决方案:绘制n个圆圈,每个圆圈的宽度为1像素,比之前的像素宽1个像素 . 问题在于:它会产生图形故障 . (还具有不同的多重采样抗锯齿值)
-
解决方案:绘制一个大的填充圆,然后用backgroundcolor绘制一个较小的圆 . 问题:我无法实现重叠的环形状 . 其他一切都很好 .
我不能使用环形纹理,因为我必须增加/减少环形半径动态 . 边框宽度应始终具有相同的值 .
如何用shaperenderer绘制光滑的环?
编辑:增加行宽无济于事:
3 回答
MeshBuilder
可以选择使用ellipse
方法创建环 . 它允许您指定环的内部和外部大小 . 通常这会产生一个Mesh,您需要自己渲染 . 但由于最近的更改,它也可以与PolygonSpriteBatch
(Batch
的实现一起使用,允许更灵活的形状,而SpriteBatch
仅允许四边形)一起使用 . 您可以使用PolygonSpriteBatch
而不是通常使用SpriteBatch
的地方(例如,您的Stage
或Sprite
类) .以下是如何使用它的示例:https://gist.github.com/xoppa/2978633678fa1c19cc47,但请记住,您确实需要最新的每晚(或至少发布1.6.4) .
也许你可以尝试以其他方式制作戒指,例如使用三角形 . 我不熟悉LibGDX,所以这里有一些伪代码 .
或者,将环分成四个多边形,每个多边形由整个环的四分之一组成 . 然后使用ShapeRenderer填充这些多边形 .
以下是如何划分戒指的说明:
如果我理解你的问题,也许,使用
glLineWidth();
帮助你 .示例伪代码: