如何在Libgdx中渲染多个形状?

时间:2016-12-21 17:06:50

标签: java libgdx shape-rendering

我使用for循环创建了一堆矩形,然后将它们添加到数组列表中。我教过渲染与从box2d渲染userdata的方式类似。

sr.setProjectionMatrix(camera.combined);
sr.begin(ShapeRenderer.ShapeType.Filled);
    for(Rectangle r : rectangles)
          sr.rect(r.x, r.y, r.width, r.height);

sr.end();

问题是,在完成for循环之后,矩形不再被渲染了,我知道发生这种情况是因为你没有渲染实际的矩形而只是使用shapeRenderer来绘制一个使用矩形属性的形状。有没有办法像渲染精灵那样做?

1 个答案:

答案 0 :(得分:0)

在LibGDX中,Sprite类专门用于使用SpriteBatch进行渲染。它包含一个实际的数据数组,可以直接复制到SpriteBatch的Mesh数据数组中。这就是它拥有自己的draw方法的原因,与TextureRegion不同。 Sprite中的这个后备数据数组为其提供了 potential 以便更快地绘制,因为只有在移动时才需要重新计算其中的一些数据。

ShapeRenderer不提供任何直接传递网格顶点数据数组的方法。 Rectangle类不是专门为渲染而设计的。如果您只是想要一种更简单的方法来编写绘图代码,您可以继承Rectangle以添加一个方便的方法来直接使用ShapeRenderer绘制它。

public class MyRectangle extends Rectangle {

    //... constructors

    public void draw (ShapeRenderer shapeRenderer){
        shapeRenderer.rect(x, y, width, height);
    }
}