¿Cómo dividir una pantalla por la mitad usando LibGDX sin escalar?

Actualmente estoy trabajando en un juego de carreras con libGDX y necesito dividir la pantalla a la mitad para un modo de dos jugadores. (Jugador 1 en la primera mitad y Jugador 2 en la segunda mitad).

Ya tengo la camera 1 que seguirá al auto del jugador 1 y la camera 2 que seguirá al auto del jugador 2.

Básicamente, quiero que la primera mitad muestre el auto del Jugador 1 y la segunda mitad para mostrar el auto del Jugador 2.

He estado buscando por un time en línea una forma de dividir pantallas con LibGDX y encontré cómo dividir la pantalla en dos con este código:

/*Left Half*/ Gdx.gl.glViewport( 0,0,Gdx.graphics.getWidth()/2,Gdx.graphics.getHeight() ); /*Right Half*/ Gdx.gl.glViewport(Gdx.graphics.getWidth()/2,0,Gdx.graphics.getWidth()/2,Gdx.graphics.getHeight() ); 

Sin embargo, aprieta la pantalla en la mitad derecha, que no es lo que quiero.

¿Hay alguna manera de dividir la pantalla sin apretarla?

Sugiero echar un vistazo a esta página y usar una window gráfica para administrar ambas cameras. Dado que no desea escalar un ScreenViewport, sería el path a seguir.

https://github.com/libgdx/libgdx/wiki/Viewports

 // These would be the cameras you have set up which are following the players Camera playerOneCamera; Camera playerTwoCamera; ScreenViewport playerOneViewport = new ScreenViewport(playerOneCamera); ScreenViewport playerTwoViewport = new ScreenViewport(playerTwoCamera); 

Cada vez que se cambia el tamaño de la window, se actualizarían ambas windows con nuevas dimensiones y compensaciones. Para dividir la pantalla verticalmente, haría lo siguiente:

 public void resize(int width, int height){ playerOneViewport.update(width / 2, height); playerTwoViewport.update(width / 2, height); playerTwoViewport.setScreenX(width / 2); } 

Luego, cada llamada al sorteo realiza dos representaciones, una con la proyección de la primera camera y otra con la proyección de la segunda camera.

 public void render(){ // Set batch to use first players camera batch.setProjectionMatrix(playerOneCamera.combined); batch.begin(); // Render what is requinetworking batch.end(); // Set batch to use second players camera batch.setProjectionMatrix(playerTwoCamera.combined); batch.begin(); // Render what is requinetworking batch.end(); }