java - LibGDX 使视口(viewport)大于屏幕

标签 java libgdx viewport

有一段时间我一直在努力解决如何在 LibGDX 中使用和设置视口(viewport)。我希望能够在 1920x1080 的显示器上渲染所有内容,并使其缩放以适合其打开的显示器,并且我需要一些帮助才能像这样工作。
This是我希望它看起来像的样子(从具有 1920x1080 显示器的计算机上获取),但是当我在 1440x800 的笔记本电脑上运行相同的代码时,它看起来像 this 。对于糟糕的屏幕照片,我深表歉意,无论出于何种原因,我都无法让它拍摄正在运行的游戏的屏幕截图,但它表明显示器的顶部仍未使用,并且并非所有内容都适合显示器。这是运行该节目的主要代码:

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 上。 。再次感谢!

最佳答案

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

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

经验教训:Gdx.graphics.getWidth() 可以并且将会根据设备而变化,而 cam.veiwportWidth 不会。哎呀!

关于java - LibGDX 使视口(viewport)大于屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50460276/

相关文章:

graphics - LIBGDX:什么是 "viewport"?

java - 检查数组元素周围的单元格java

java - 如何使用play.WS获取java.io.file?

java - 应用程序未加载 Music LibGDX

javascript - 在 javascript 中设置属性时未捕获类型错误

HTML 5 CSS 3 @viewport 媒体查询

java - 日期格式转换异常

java - 字节 z[] = 新字节[5]; - 这是什么意思?

java - 渲染方法中的 for 循环问题(Libgdx)

java - 中心 libgdx 阶段对象