LibGDX全屏显示模式和相机resize

我正在创建一个简单的2D平台,当我进入全屏模式时,我的相机位置有问题。 但首先是我的代码

screenY = Gdx.graphics.getHeight(); public void updateCamera(){ camera.position.x += (player1.getHitBox().x - camera.position.x); if(screenY < player1.getHitBox().getY() && player1.getHitBox().getY() > (screenY - Gdx.graphics.getHeight())){ screenChanger++; }else if(player1.getHitBox().getY() < (screenY - Gdx.graphics.getHeight())){ screenChanger--; } screenY = Gdx.graphics.getHeight() * screenChanger; camera.position.y = (screenY - screenY/2); camera.update(); System.out.println(Gdx.graphics.getHeight() + " " + screenY); } 

所以这是我的结果:1)当我开始游戏一切正常 在这里输入图像说明

2)但是当我在这里进入全屏时,我得到了什么 在这里输入图像说明

3)在这里,当我缩小我的相机,它看起来如何 在这里输入图像说明

当你“进入全屏”,基本窗口的边界被删除,它的大小和移动,以便其“ClientBounds == ScreenBounds。 发生这种情况时,设备将被销毁(“丢失”),并且需要重新创建。 同时,还应该使用新的大小重新创建应该是“全屏”的后台缓冲区和任何其他纹理或rendertarget。 用错误的尺寸重新创建它们将导致放大和/或缩小伪像(像素化,看起来“被压扁”或“被挤压”等)。

作为重新调整rendertarget的函数,描述渲染目标部分的gl_Viewport也可能需要更新。

作为更新视口的function,摄像机也可能需要使用不同的matrix。 对于二维,视图matrix通常是标识,所以您只需更新相机的投影以适应纹理中的“更多的世界”。 世界matrix还只是世界。

LibGDX将所有上述内容包装到Viewport类中(低级使用细节) 。

通读这个(高级使用细节) 。 StrongJoshua