9

I'm currently making a game using the Libgdx library, and have currently hit a small hurdle.

I've disabled the ability to resize currently, in my Main.java class in the desktop project.

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

I'm wondering whether there is a simple way to make the window resize whilst keeping the aspect ratio. (Like when you shift+resize)

What are my options? :)

4

1 回答 1

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

问候

于 2013-08-28T21:09:42.890 回答