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

9

我目前正在使用Libgdx库制作游戏,但是遇到了一个小问题。

我已经在桌面项目的Main.java类中禁用了调整大小的能力。

LwjglApplicationConfiguration cfg = new LwjglApplicationConfiguration();
    cfg.resizable = false;

我想知道是否有一种简单的方法可以在保持宽高比的情况下调整窗口大小(就像按下Shift+调整大小时一样)。 我有哪些选择? :)
1个回答

3
该函数不能保持宽高比,甚至与你想要的东西毫无关系。它只是禁用了在桌面应用程序中调整屏幕大小的可能性。
请特别注意libGDX wiki上的Scene2D页面。从舞台(Stage)中的 Viewport 部分可以了解到如何在当前的libGDX中保持宽高比。有一些教程介绍了使用虚拟分辨率和屏幕调整方法来实现不同的方式。这种方法已经过时了!
引用自wiki:

该示例还使用一个固定的舞台大小,在两侧使用“黑色条纹”,这次使用glViewport。首先,将800x480的舞台大小缩放以适合屏幕大小,使用Scaling类得出结果,该结果用于配置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);
}

致意


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接