programacion - Resolución de pantalla completa en Android para juegos libgdx
pantalla completa google chrome android (1)
Has configurado tu glViewport a 480x800, lo que significa que estás pidiendo al hardware del teléfono una ventana de 480x800. Debido a que la mayoría (¿todo?) Del hardware del teléfono no hace escala en la pantalla (como hace su monitor de escritorio), simplemente le dan un área de 480x800 en la pantalla.
Necesitará que OpenGL "amplíe" su pantalla, y lo hará al configurar glViewport () a la resolución física de su dispositivo (¡advertencias de relación de aspecto de módulo!). Debe dejar la cámara en la resolución ''virtual'' que prefiera (así que 480x800 en este caso). Ahora OpenGL escalará todas sus primitivas hasta la resolución de la pantalla.
Como una prueba rápida, prueba esto:
gl.glViewport(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
El siguiente problema es que si la relación de aspecto del hardware no coincide con su relación de aspecto ''virtual''. En ese caso, debe decidir entre estiramiento, dejar barras negras en un lado o cambiar su relación de aspecto virtual. Consulte esta publicación en el blog para obtener más detalles sobre la configuración de la cámara / ventana gráfica y algunas soluciones para el problema de relación de aspecto: http://blog.acamara.es/2012/02/05/keep-screen-aspect-ratio-with-different -resolutions-using-libgdx /
Me preguntaba si había una forma de hacer juegos de Android en libgdx para que todos compartan la misma resolución de 480x800. El uso de Gdx.graphics.setDisplayMode (480, 800, true) no parece cambiar nada. La creación de una imagen ortográfica de 480 por 800 hace que el juego sea de 480 por 800, pero no se amplía a pantalla completa y ocupa toda la pantalla como esperaba. Cuando lo probé en mi teléfono, el teléfono simplemente usó espacio en blanco para llenar el resto de la pantalla mientras el juego tenía una resolución de 480x800. Aquí está el código que estoy usando.
public class GameScreen implements Screen {
private Game game;
private OrthographicCamera guiCam;
private SpriteBatch batch;
private Texture texture;
private Rectangle glViewport;
public GameScreen (Game game)
{
this.game = game;
guiCam = new OrthographicCamera(GAME_WIDTH, GAME_HEIGHT);
guiCam.position.set(GAME_WIDTH / 2, GAME_HEIGHT / 2, 0);
batch = new SpriteBatch();
texture = new Texture(Gdx.files.internal("data/c2.png"));
glViewport = new Rectangle(0, 0, GAME_WIDTH, GAME_HEIGHT);
}
@Override
public void render(float delta) {
if (Gdx.input.justTouched()) {
texture = new Texture(Gdx.files.internal("data/c1.png"));
}
GL10 gl = Gdx.graphics.getGL10();
gl.glClearColor(1, 0, 0, 1);
gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
gl.glViewport((int) glViewport.x, (int) glViewport.y,
(int) glViewport.width, (int) glViewport.height);
guiCam.update();
guiCam.apply(gl);
batch.setProjectionMatrix(guiCam.combined);
batch.begin();
batch.draw(texture, 0, 0, 0, 0, 142, 192);
batch.end();
}
private static final int GAME_WIDTH = 480;
private static final int GAME_HEIGHT = 800;
}
Gracias por adelantado.