2015-07-01 2 views
1

Я установил свою текстуру для изменения размера до Gdx.graphics.getWidth(), Gdx.graphics.getHeight() каждый раз при вызове функции функции. Фактически, когда я запускаю приложение, текстура устанавливает полный экран (как я хочу). Но когда я изменяю размер приложения, текстура рисуется каким-то тупым способом, в то время как я хочу, чтобы он был полноэкранным.Масштабирование текстур в libgdx при изменении размера

Вот код:

package com.leopikinc.bobdestroyer; 

import com.badlogic.gdx.ApplicationAdapter; 
import com.badlogic.gdx.Gdx; 
import com.badlogic.gdx.audio.Music; 
import com.badlogic.gdx.graphics.GL20; 

import com.badlogic.gdx.graphics.Texture; 
import com.badlogic.gdx.graphics.g2d.SpriteBatch; 

public class BobDestroyer extends ApplicationAdapter { 
    SpriteBatch batch; 
    Texture mainscreen; 
    Music intromusic; 
    float VOLUME; 

    @Override 
    public void create() { 
     VOLUME = 1f; 
     batch = new SpriteBatch(); 
     mainscreen = new Texture(Gdx.files.internal("data/FirstLevel.png")); 
     intromusic = Gdx.audio.newMusic(Gdx.files.internal("data/IntroMusic.mp3")); 
     intromusic.setLooping(true); 
     intromusic.setVolume(VOLUME); 
     intromusic.play(); 
    } 

    @Override 
    public void render() { 
     Gdx.gl.glClearColor(1, 1, 1, 0); 
     Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); 
     batch.begin(); 
     batch.draw(mainscreen, 0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); 
     batch.end(); 
    } 

    @Override 
    public void resize(int width, int height){ 
    } 
} 

Nice way

Dumb way

+0

Что вы имеете в виду тупой путь? Можете ли вы дать нам изображение вашего экрана? –

+0

@ Саид, сделал. – Leopik

ответ

0

Вы должны использовать viewport иметь дело с различными пропорциями.

Ниже приведен пример StretchViewport, который может отображать полноэкранную текстуру.

public class MyGdxGame extends ApplicationAdapter { 
    SpriteBatch batch; 
    Texture img; 
    private Viewport viewport; 
    private Camera camera; 

    @Override 
    public void create() { 
     camera = new OrthographicCamera(); 
     viewport = new StretchViewport(Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); 
     viewport.setCamera(camera); 
     batch = new SpriteBatch(); 
     img = new Texture("badlogic.jpg"); 

    } 

    @Override 
    public void render() { 
     camera.update(); 
     Gdx.gl.glClearColor(0, 0, 0, 1); 
     Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); 
     batch.begin(); 
     batch.draw(img, 0, 0, viewport.getWorldWidth(),viewport.getWorldHeight()); 
     batch.end(); 
    } 

    @Override 
    public void resize(int width, int height) { 
     viewport.update(width, height); 

    } 
} 

Перед изменением размеров экрана:

before changing screen sizes После изменения размеров экрана:

after changing screen sizes

Смежные вопросы