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

标签 java libgdx shape-rendering

我使用 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 使用矩形的属性绘制形状。有没有一种方法可以类似于渲染 Sprite 的方式来做到这一点?

最佳答案

在 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);
    }
}

关于java - 如何在 Libgdx 中渲染多个形状?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41268199/

相关文章:

java - 简单的上传速度测试

java - 如何在任何地方访问 LibGDX 的 ApplicationAdapter 实例

java - 如何在 libgdx 中填充一个圆圈?

java - Libgdx body 位置和 shaperrenderer 位置不一样

java - HashMap中的桶数是什么意思?

java - 如何删除自定义链表中的所有节点?

java - 点击监听器不起作用

java - 我如何从 libgdx 中的另一个类调用方法

java - 没有 I/O 的 Java 文件类型检测