我有这个
我需要只绘制这部分
我在SpriteBatch中找不到drawArc,如何在libgdx中完成?
更新
我已经有一些SpriteBatch绘制的纹理。
阅读this使用SpriteBatch和ShapeRenderer不是一个好主意。
答案 0 :(得分:1)
绘制弧线,您可以使用ShapeRenderer代替批处理及其弧功能
arc(float x, float y, float radius, float start, float degrees)
如何使用它的简单示例(在渲染方法中):
shapeRenderer.setProjectionMatrix(camera.combined);
shapeRenderer.begin(ShapeType.Line);
shapeRenderer.setColor(0, 0, 0, 1);
shapeRenderer.arc(yourX, yourY, yourRadius, yourStart, yourDegrees);
shapeRenderer.end();
如果你想在没有" arm"你可以看看这里:libgdx drawing arc curve
如果你想渲染Texture的片段,我想到了两个解决方案:
清除您要渲染的arcus形状中未包含的 Pixmap 像素。您可以使用
获取PixmapPixmap pixmap = texture.getTextureData().consumePixmap();
然后你只需迭代它并只对这些新的像素图进行处理,只有这些像素位于你的弧形内部并根据新的Pixmap创建新的纹理然后呈现新的纹理
Pixmap newPixmap = new Pixmap(pixmap.getWidth(), pixmap.getHeight(), pixmap.getFormat());
for(int i = 0 ; i < pixmap.getWidth(); i++)
for(int j = 0 ; j < pixmap.getWidth(); j++)
if( isInArc(i, j) ) newPixmap.draw(i, j, pixmap.getPixel(i, j) );
Texture newTexture = new Texture(newPixmap);
当然 isInArc()功能你需要自己编写,因为你将如何定义弧等等 - 你可以查看Intersector以使其更容易