Порядок отрисовки SpriteBatch и ShapeRenderer в libgdx

Мне приходится заказывать спрайты и фигуры, нарисованные на экране.

можно ли вызывать начало и конец 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();

person pats    schedule 02.11.2017    source источник


Ответы (1)


Нет, нет. Если у вас есть определенный порядок, в котором вы хотите рисовать вещи, и для которого требуются разные партии, вы должны вызывать end и begin несколько раз. Это ужасный дизайн IMO (со стороны библиотеки), но так оно и работает.

Обходных путей для этого нет, и я сомневаюсь, что они будут. Итак, вы застряли в вызове begin и end каждый раз, когда вы меняете средство визуализации.

person Zoe    schedule 02.11.2017