SpriteBatch和ShapeRenderer在libgdx中绘制排序

时间:2017-11-02 06:28:27

标签: java android opengl-es libgdx

我必须在屏幕上订购精灵和形状。

可以在render方法中多次调用SpriteBatch和ShapeRenderer的开始和结束。

有没有避免这种情况?

我的要求。

shapeRenderer.begin(ShapeRenderer.ShapeType.Line);
shapeRenderer.setProjectionMatrix(batch.getProjectionMatrix());
shapeRenderer.rect(....);
shapeRenderer.end();


batch.begin();
for (int i = 0; i < spriteList.size(); i++) {
     spriteList.get(i).render(batch);
}
batch.end();

shapeRenderer.begin(ShapeRenderer.ShapeType.Filled);
shapeRenderer.setProjectionMatrix(batch.getProjectionMatrix());
shapeRenderer.setColor(Color.GRAY.r,Color.GRAY.g, Color.GRAY.b, 1);
shapeRenderer.rect(....);
shapeRenderer.end();

batch.begin();
score.render(batch);
batch.end();

1 个答案:

答案 0 :(得分:2)

不,没有。如果您有一个特定的订单,您想要绘制东西并且需要不同的批次,则必须调用end并重复开始。这是一个可怕的设计IMO(来自图书馆的一面),但它是如何运作的。

没有解决方法,我怀疑会不会有任何变通方法。因此,每次更改渲染器时,您都会停止调用begin和end