¿Cómo puedo agregar una superposition transparente a una interfaz de usuario en libGDX?

Estoy intentando usar el siguiente código

shapeRenderer.begin(ShapeRenderer.ShapeType.Filled); shapeRenderer.setColor(3,3,3,.3f); shapeRenderer.rect(0,0,gameWidth,gameHeight); shapeRenderer.end(); 

De modo que cuando se accede al menu, aparece un background transparente. El problema al que me enfrento es que cuando trato de hacer esto, los objects renderizados por el SpriteBatch parecen portarse mal. Tras nuevas investigaciones, descubrí que el bash de anidar ese código en SpriteBatch.begin () y SpriteBatch.end () es la causa de eso. Sin embargo, si bash colocar el código después de SpriteBatch.end (), porque el SpriteBatch ha terminado, los objects representados por él no aparecen detrás del rectángulo transparente. (Intenté asignar SpriteBatch y Shaperender a una camera diferente, sin embargo, eso no solucionó el problema). ¿Cómo puedo solucionar esto o encontrar otra forma de implementar el background transparente para el menu?

Como se mencionó anteriormente, puede iniciar y detener un SpriteBatch en el mismo método de sorteo, también para la transparencia que necesita para habilitar BLEND. Esto es lo que hice con una de mis UI.

  batchstuff... spriteBatch.end(); Gdx.graphics.getGL20().glEnable(GL20.GL_BLEND); Gdx.gl.glBlendFunc(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA); shapeRenderer.begin(ShapeRenderer.ShapeType.Filled); shapeRenderer.setColor(new Color(1, 1, 1, 0.1f)); shapeRenderer.rect(screenMargin + innerScreenMargin, screenMargin+innerScreenMargin + 5*(cellItemHeight+cellMargin+innerCellBorder)-innerCellBorder-cellMargin + innerScreenMargin, (innerCellBorder + innerCellWidth+cellMargin) * 10 - innerCellBorder-cellMargin, 380); shapeRenderer.end(); Gdx.gl.glDisable(GL20.GL_BLEND); spriteBatch.begin(); ... more batchstuff