LibGDX使视口大于屏幕

时间:2018-05-22 05:17:52

标签: java libgdx viewport

我一直在努力解决如何在LibGDX中使用和设置Viewports已有一段时间了。我希望能够在1920x1080的显示器上渲染所有类似的东西,并将其缩放以适合其显示,我需要一些帮助才能开始工作。
This是我希望它看起来的样子(取自具有1920x1080显示器的计算机),但是当我在笔记本电脑上运行1440x800的相同代码时,它看起来像this。我为这张糟糕的屏幕照片道歉,我无法用它拍摄游戏的截图,无论出于何种原因,但它显示显示屏的顶部仍未使用,并且并非一切都适合显示。这是运行show的主要代码:

public class Main extends Game {
    ...
    public void create() {
        ...         
        Gdx.graphics.setFullscreenMode(Gdx.graphics.getDisplayMode());

        //last
        this.setScreen(new MainMenu(this));
    }

    public void render() {
        super.render(); //important!
    }
    ...
}

然后是MainMenu类

public class MainMenu implements Screen{
    ...

    public MainMenu(final Main game) {
        this.game = game;
        cam = new OrthographicCamera();
        cam.setToOrtho(false, 1920, 1080);

        ...
    }

    @Override
    public void render(float delta) {
        Gdx.gl.glClearColor(0.025f, .025f, 0.025f, 1);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
        cam.update();
        game.batch.setProjectionMatrix(cam.combined);

        ...

        if(Gdx.input.isKeyPressed(Keys.ESCAPE)) {
            Gdx.app.exit();
        }
    }

    ...
}

如何在较小的屏幕上实现Viewport或类似功能,使其在较大的屏幕上看起来与在较大的屏幕上一样?任何帮助真的很感激!如果你想看到我为了简洁而遗漏的代码,那就是我的GitHub。再次感谢!

1 个答案:

答案 0 :(得分:1)

这并没有花费我很长时间,希望有人会向我学习,哈哈。

当您使用具有固定高度和宽度的相机时,它会填满整个显示器,但相机宽度不等于Gdx.graphics.getWidth()返回的值。因此,我的所有代码都被渲染为被压缩,因为它引用了Gdx.graphics返回的宽度,而不是camera.viewportWidth

获得的经验教训:Gdx.graphics.getWidth()可以而且会根据设备和cam.veiwportWidth而改变。糟糕!