1

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

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();

问题是在 fro 循环结束后,矩形不再被渲染,我知道这是因为您没有渲染实际的矩形,而只是使用 shapeRenderer 使用矩形的属性绘制形状。有没有一种类似于渲染精灵的方法?

4

1 回答 1

1

在 LibGDX 中,Sprite 类是专门为使用 SpriteBatch 渲染而设计的。它包含一个实际的数据数组,可以直接复制到 SpriteBatch 的 Mesh 数据数组中。这就是它拥有自己的draw方法的原因,与 TextureRegion 不同。Sprite 中的这种支持数据数组使其具有更快绘制的潜力,因为它的一些数据只有在移动时才需要重新计算。

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

public class MyRectangle extends Rectangle {

    //... constructors

    public void draw (ShapeRenderer shapeRenderer){
        shapeRenderer.rect(x, y, width, height);
    }
}
于 2016-12-21T17:28:52.243 回答