Graphics 调整大小时在libgdx中缩放纹理

Graphics 调整大小时在libgdx中缩放纹理,graphics,libgdx,game-engine,Graphics,Libgdx,Game Engine,每次渲染函数调用时,我将纹理的大小设置为Gdx.graphics.getWidth(),Gdx.graphics.getHeight()。事实上,当我启动该应用程序时,纹理设置为全屏(如我所愿)。但是,当我改变应用程序的大小时,纹理以某种愚蠢的方式绘制,而我希望它始终是全屏的 代码如下: package com.leopikinc.bobdestroyer; import com.badlogic.gdx.ApplicationAdapter; import com.badlogic.

每次渲染函数调用时,我将纹理的大小设置为
Gdx.graphics.getWidth()
Gdx.graphics.getHeight()
。事实上,当我启动该应用程序时,纹理设置为全屏(如我所愿)。但是,当我改变应用程序的大小时,纹理以某种愚蠢的方式绘制,而我希望它始终是全屏的

代码如下:

    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){
    }
}

您应该使用来处理不同的纵横比

下面是一个可以显示全屏纹理的
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);

    }
}
更改屏幕大小之前:

更改屏幕大小后:

您应该使用来处理不同的纵横比

下面是一个可以显示全屏纹理的
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);

    }
}
更改屏幕大小之前:

更改屏幕大小后:


你所说的愚蠢方式是什么意思?你能给我们一张你的屏幕图片吗?你说的“愚蠢的方式”是什么意思?你能给我们一张你的屏幕图片吗?