Libgdx窗口调整大小:保持宽高比

时间:2013-08-28 18:51:57

标签: java libgdx desktop-application

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

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

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

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

我有什么选择? :)

1 个答案:

答案 0 :(得分:2)

该功能不能让您保持纵横比甚至是您所想的那样。它只会禁用在桌面应用程序中调整屏幕大小的所有权。

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

来自维基

  

此示例还使用固定的舞台大小和“黑条”   一边,这次使用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);
}

问候