libgdx中的SpriteBatch和ShapeRenderer的绘制顺序问题

3

我需要在屏幕上绘制精灵和形状,

在render方法中多次调用SpriteBatch和ShapeRenderer的begin和end方法是否可行?

有没有方法可以避免这种情况?

我的需求。

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个回答

3

没有。如果您想按特定顺序绘制物体并且需要不同的批次,则必须重复调用end和begin。在我看来,这是一种可怕的设计(来自库的方面),但这就是它的工作方式。

目前还没有解决方法,我怀疑将来也不会有任何解决方法。因此,每次更改渲染器时都必须调用begin和end。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接