LibGDX + ARCore:使用多个摄像头和视口

LibGDX + ARCore: Usage of multiple cameras and viewports

我有一个结合了 LibGDX 和 ARCore 的应用程序,基于 https://github.com/google/helloargdx 这非常适合全屏。

现在我有一个不同的要求:我垂直分割横向屏幕,现在想从 ARCore 相机控制的透视相机渲染世界到左侧,第二次使用外部控制的不同透视相机到右边。

对于 "background" 视频(物理设备相机),这已经在工作了,但我现在卡在 LibGDX 的透视相机的视口(或其他)上。

ARCore 示例设置透视相机的值如下:

float vm[] = new float[16];

Camera arCamera = frame.getCamera();
arCamera.getProjectionMatrix(vm, 0, camera.near, camera.far);
camera.projection.set(vm);
arCamera.getViewMatrix(vm, 0);
camera.view.set(vm);
camera.combined.set(camera.projection);
Matrix4.mul(camera.combined.val, camera.view.val);

但是我现在(在上述之后)如何将渲染限制在屏幕的左侧部分?旧屏幕设置的"x-middle"现在应该是物理屏幕的1/4。

问题已解决。事实证明,甚至不需要使用视口等,我们可以使用

简单地限制表面上的绘图区域
HdpiUtils.glViewport(0, 0, Gdx.graphics.getWidth() / 2, Gdx.graphics.getHeight());

但是您需要注意,您现在还需要通过以下方式转换屏幕点击:

int x = Gdx.input.getX() * 2;
int y = Gdx.input.getY();

由于将视口缩小到原始屏幕的一部分,但所有输入处理方法都希望屏幕点击来自全屏。