Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Libgdx窗口大小调整:保持纵横比_Java_Libgdx_Desktop Application - Fatal编程技术网

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

Java Libgdx窗口大小调整:保持纵横比,java,libgdx,desktop-application,Java,Libgdx,Desktop Application,我目前正在使用Libgdx库制作一个游戏,目前遇到了一个小障碍 我已经在桌面项目的Main.java类中禁用了当前调整大小的功能 LwjglApplicationConfiguration cfg = new LwjglApplicationConfiguration(); cfg.resizable = false; 我想知道是否有一种简单的方法可以在保持纵横比的同时调整窗口的大小。(如按住shift键并调整大小时) 我的选择是什么?:) 该函数不能使您保持纵横比,甚至不能保持您所想

我目前正在使用Libgdx库制作一个游戏,目前遇到了一个小障碍

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

LwjglApplicationConfiguration cfg = new LwjglApplicationConfiguration();
    cfg.resizable = false;
我想知道是否有一种简单的方法可以在保持纵横比的同时调整窗口的大小。(如按住shift键并调整大小时)


我的选择是什么?:)

该函数不能使您保持纵横比,甚至不能保持您所想的纵横比。它只是禁用了在桌面应用程序中调整屏幕大小的可能性

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

从维基

此示例还使用固定的舞台尺寸,其中任何一个舞台上都有“黑条” 侧面,这次使用glViewport。首先,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);
}