有一段时间我一直在努力解决如何在 LibGDX 中使用和设置视口(viewport)。我希望能够在 1920x1080 的显示器上渲染所有内容,并使其缩放以适合其打开的显示器,并且我需要一些帮助才能像这样工作。
This是我希望它看起来像的样子(从具有 1920x1080 显示器的计算机上获取),但是当我在 1440x800 的笔记本电脑上运行相同的代码时,它看起来像 this 。对于糟糕的屏幕照片,我深表歉意,无论出于何种原因,我都无法让它拍摄正在运行的游戏的屏幕截图,但它表明显示器的顶部仍未使用,并且并非所有内容都适合显示器。这是运行该节目的主要代码:
public class Main extends Game {
...
public void create() {
...
Gdx.graphics.setFullscreenMode(Gdx.graphics.getDisplayMode());
//last
this.setScreen(new MainMenu(this));
}
public void render() {
super.render(); //important!
}
...
}
然后是 MainMenu 类
public class MainMenu implements Screen{
...
public MainMenu(final Main game) {
this.game = game;
cam = new OrthographicCamera();
cam.setToOrtho(false, 1920, 1080);
...
}
@Override
public void render(float delta) {
Gdx.gl.glClearColor(0.025f, .025f, 0.025f, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
cam.update();
game.batch.setProjectionMatrix(cam.combined);
...
if(Gdx.input.isKeyPressed(Keys.ESCAPE)) {
Gdx.app.exit();
}
}
...
}
我如何实现视口(viewport)或类似的东西,使其在较小的屏幕上看起来与在较大的屏幕上看起来相同?非常感谢任何帮助!如果您想查看我为简洁起见而省略的代码,它们都在我的 GitHub 上。 。再次感谢!
最佳答案
这并没有花费我很长时间,希望有人能向我学习,哈哈。
事实证明,当您像这样使用固定高度和宽度的相机时,它确实会填满整个显示器,但相机宽度不等于Gdx.graphics.getWidth()返回的值
。因此,我的所有代码都像被压缩一样渲染,因为它引用的是 Gdx.graphics 返回的宽度,而不是camera.viewportWidth。
经验教训:Gdx.graphics.getWidth()
可以并且将会根据设备而变化,而 cam.veiwportWidth
不会。哎呀!
关于java - LibGDX 使视口(viewport)大于屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50460276/