Java LibGDX:如何在视口的黑条区域中绘制?

Java LibGDX:如何在视口的黑条区域中绘制?,java,libgdx,viewport,aspect-ratio,Java,Libgdx,Viewport,Aspect Ratio,我得到了一个虚拟的宽度和高度。当屏幕的纵横比超过我的虚拟分辨率时,会添加黑色条。我想在这些信箱里画些东西 我试着这样做,但只有“在我的虚拟分辨率内”的对象被绘制,“在外”的对象是不可见的: viewport = new FitViewport(VIRTUAL_WIDTH, VIRTUAL_HEIGHT, cam); viewport.apply(); batch.setProjectionMatrix(cam.combined); batch.begin(); batch.draw(text

我得到了一个虚拟的宽度和高度。当屏幕的纵横比超过我的虚拟分辨率时,会添加黑色条。我想在这些信箱里画些东西

我试着这样做,但只有“在我的虚拟分辨率内”的对象被绘制,“在外”的对象是不可见的:

viewport = new FitViewport(VIRTUAL_WIDTH, VIRTUAL_HEIGHT, cam);
viewport.apply();

batch.setProjectionMatrix(cam.combined);

batch.begin();
batch.draw(texture, viewport.getRightGutterX(), 0);
batch.end();

如何在信箱内绘制?

您需要第二个视口,可能是与您的视口具有相同虚拟尺寸的ExtendViewport

//create:
fitViewport = new FitViewport(VIRTUAL_WIDTH, VIRTUAL_HEIGHT);
extendViewport = new ExtendViewport(VIRTUAL_WIDTH, VIRTUAL_HEIGHT);

//resize:
fitViewport.update(width, height);
extendViewport.update(width, height);

//render:

fitViewport.apply();
batch.setProjectionMatrix(fitViewport.getCamera().combined);
batch.begin();
//draw game
batch.end();

extendViewport.apply();
batch.setProjectionMatrix(extendViewport.getCamera().combined);
batch.begin();
//draw stuff in border
batch.end();
如果你想确保边界的东西不重叠你的游戏,你可以交换上面的抽签顺序

或者,您可以使用ExtendViewport开始所有操作。

可以这样做,但没有第二个
视口。