What I usually do is having a single camera to render the world and just overlay the hud by drawing the stage last stage.draw() . Stage is excellent for this. Obviously this obscures some of the game world that should normally be visible without the hud so if you really want multiple "viewports" then you have to work with Viewports .

Viewports are easy to implement and handles everything for you if you pick the correct one. After you have setup the camera you can create a viewport like this:

camera = new OrthographicCamera(1920 / 2, 1080); //1920, 1080 for sake of example. This could be anything and it is often // better to not think in pixels but in world units. viewport = new FitViewport(camera.viewportWidth, camera.viewportHeight, camera); viewport.setScreenBounds(0, 0, Gdx.graphics.getWidth() / 2, Gdx.graphics.getHeight());

This will create a viewport on the left half of the screen by using setScreenBounds(...) . Since we are drawing the stuff on the camera by only half the screen we have to match the aspect ration, otherwise it would appear stretched.

For clarification since this is a bit confusing sometimes:

float worldWidth, worldHeight; // How much of the world to display viewport = new FitViewport(worldWidth, worldHeight, camera); int screenPosX, screenPosY, screenWidth, screenHeight; // The position of the viewport where 0, 0 is bottom left and // Gdx.graphcis.getWidth, Gdx.graphics.getHeight is top right viewport.setScreenBounds(screenPosX, screenPosY, screenWidth, screenHeight);

You actually don't need to specify your camera width and height since that is being overridden anyway once you hit vp.apply() with that camera attached to the vp.