Libgdx窗口调整大小:保持纵横比

jam*_*c19 7 java desktop-application libgdx

我目前正在使用Libgdx库进行游戏,目前已经遇到了一个小障碍.

我在桌面项目的Main.java类中禁用了当前调整大小的功能.

LwjglApplicationConfiguration cfg = new LwjglApplicationConfiguration();
    cfg.resizable = false;
Run Code Online (Sandbox Code Playgroud)

我想知道是否有一种简单的方法可以在保持宽高比的同时调整窗口大小.(就像你转移+调整大小时)

我有什么选择?:)

Ben*_*nnX 3

该功能并不能让您保持纵横比,甚至无法保持您所想的那样。它只是禁用了在桌面应用程序中调整屏幕大小的可能性。

请查看 libGDX wiki,特别是Scene2D页面。看一下舞台上的视口内容。它解释了如何保持当前 libGDX 的纵横比。有一些教程确实借助虚拟分辨率和屏幕调整大小方法解释了不同的方式。已经过时了!

来自维基百科

此示例还使用固定舞台尺寸,两侧均带有“黑条”,这次使用 glViewport。首先,使用 Scaling 类缩放 800x480 的舞台尺寸以适合屏幕尺寸。结果用于配置 glViewport,这会更改 OpenGL 将使用屏幕的哪一部分。最后,向 setViewport 传递视口位置和大小。结果与上一个示例相同,舞台上有必要的“黑条”以保持纵横比,但在视口之外不能发生任何绘制。

public void resize (int width, int height) {
        Vector2 size = Scaling.fit.apply(800, 480, width, height);
        int viewportX = (int)(width - size.x) / 2;
        int viewportY = (int)(height - size.y) / 2;
        int viewportWidth = (int)size.x;
        int viewportHeight = (int)size.y;
        Gdx.gl.glViewport(viewportX, viewportY, viewportWidth, viewportHeight);
        stage.setViewport(800, 480, true, viewportX, viewportY, viewportWidth, viewportHeight);
}
Run Code Online (Sandbox Code Playgroud)

问候