El renderizador de forma libGDX no dibuja después de presionar el button Atrás

Estoy implementando una página de selección de nivel (como angry birds) usando libGDX. Tengo esta function auxiliar para dibujar el indicador de página (puntos que indican la página actual):

val shapeRenderer = ShapeRenderer() fun drawPageIndicator(batch: Batch?, page: Int, pageCount: Int, y: Float, centerX: Float, gap: Float, radius: Float) { batch?.end(); var fromX = centerX - pageCount/2 * gap; if (pageCount % 2 == 0) { fromX += gap / 2; } shapeRenderer.projectionMatrix = batch?.projectionMatrix shapeRenderer.begin(ShapeRenderer.ShapeType.Filled) for (i in 0..pageCount-1) { if (i == page) { shapeRenderer.color = Color.WHITE } else { shapeRenderer.color = Color.GRAY } shapeRenderer.circle(fromX, y, radius) fromX += gap; } shapeRenderer.end() batch?.begin(); } 

Luego, en la function de dibujar, tengo:

 override fun draw(batch: Batch?, parentAlpha: Float) { super.draw(batch, parentAlpha) H.drawPageIndicator(batch, scroller.currentPage, scroller.pageCount, indicatorY, scroller.x + scroller.width / 2, 16f, 4f) } 

Funciona como se esperaba. Pero cada vez que presiono el button Atrás (que sale a la página de inicio), y luego vuelvo a la pantalla de selección de nivel, los puntos desaparecen.

El problema es que está llamando a batch.end () y batch.begin () invertidos, lo que puede estar influyendo al dejar esta página continuar con el lote en begin () dejándolo habilitado para los dibujos de lotes y manteniendo la pantalla oscura.