Search code examples
javaandroidlibgdx

ShapeRenderer not drawing FilledRectangles behind Images


I'm trying to draw FilledRectangles behind two different images using this code. But the ShapeRenderer isn't drawing anything.

public void render(float delta) {

    shapeRenderer.begin(ShapeRenderer.ShapeType.Filled);
    shapeRenderer.setColor(tankColor);
    shapeRenderer.rect(tankButton.x, tankButton.y,
            tankButton.width+50, tankButton.height+50);
    shapeRenderer.setColor(notesColor);
    shapeRenderer.rect(notesButton.x, notesButton.y,
            notesButton.width+50, notesButton.height+50);
    shapeRenderer.end();

    batch.begin();

    batch.draw(assetsLoader.backTexture, 0, 0, screenWidth, screenHeight);

    assetsLoader.shadow.draw(batch, " Touch for Sound !",
            Gdx.graphics.getWidth() / 2f - 150 + 5,
            200 + assetsLoader.font.getCapHeight() + 5, 400, Align.center, false);
    assetsLoader.font.draw(batch, " Touch for Sound !",
            Gdx.graphics.getWidth() / 2f - 150,
            200 + assetsLoader.font.getCapHeight(), 400, Align.center, false);



    // draw tank and notes image
    batch.draw(assetsLoader.tankTexture, tankButton.x, tankButton.y,
            tankButton.getWidth(), tankButton.getHeight());
    batch.draw(assetsLoader.notesTexture, notesButton.x, notesButton.y,
            notesButton.getWidth(), notesButton.getHeight());


    batch.end();


}

This is what I'm getting: enter image description here

This is what I need: enter image description here


Solution

  • I figured it out. All I had to do was begin another batch after I inserted the Filled Rectangles. This is what I did:

    public void render(float delta) {
    
        batch.begin();
    
        batch.draw(assetsLoader.backTexture, 0, 0, screenWidth, screenHeight);
    
    
    
        assetsLoader.shadow.draw(batch, " Touch for Sound !",
                Gdx.graphics.getWidth() / 2f - 150 + 5,
                200 + assetsLoader.font.getCapHeight() + 5, 400, Align.center, false);
        assetsLoader.font.draw(batch, " Touch for Sound !",
                Gdx.graphics.getWidth() / 2f - 150,
                200 + assetsLoader.font.getCapHeight(), 400, Align.center, false);
    
    
        batch.end();
    
        shapeRenderer.begin(ShapeRenderer.ShapeType.Filled);
        shapeRenderer.setColor(tankColor);
        shapeRenderer.rect(tankButton.x-25, tankButton.y-25,
                tankButton.width+50, tankButton.height+50);
    
    
        shapeRenderer.setColor(notesColor);
        shapeRenderer.rect(notesButton.x-25, notesButton.y-25,
                notesButton.width+50, notesButton.height+50);
        shapeRenderer.end();
    
    
    
        batch.begin();
    
        batch.draw(assetsLoader.tankTexture, tankButton.x, tankButton.y,
                tankButton.getWidth(), tankButton.getHeight());
        batch.draw(assetsLoader.notesTexture, notesButton.x, notesButton.y,
                notesButton.getWidth(), notesButton.getHeight());
    
        batch.end();