LibGDX + ARCore: использование нескольких камер и видовых экранов
У меня есть приложение, объединяющее LibGDX и ARCore, основанное на https://github.com/google/helloargdx Это прекрасно работает для полноэкранного режима.
Теперь у меня другое требование: я разделил ландшафтно-ориентированный экран по вертикали и теперь хочу визуализировать мир с перспективной камеры, управляемой камерой ARCore, на левую сторону и второй раз с другой перспективной камерой, управляемой снаружи на правую сторону.
Для "фонового" видео (камера phyiscal устройства) это уже работает, но я в данный момент застрял в окне просмотра (или что-то еще) от перспективной камеры 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);
Но как я могу теперь (после вышеупомянутого) ограничить рендеринг левой частью экрана? "Х-середина" старой настройки экрана теперь должна составлять 1/4 от физического экрана.
1 ответ
Задача решена. Оказалось, что нет необходимости работать с окнами просмотра и т. Д., Мы можем просто ограничить область рисования на поверхности, используя
HdpiUtils.glViewport(0, 0, Gdx.graphics.getWidth() / 2, Gdx.graphics.getHeight());
Однако вы должны знать, что теперь вам также нужно конвертировать касания экрана, например:
int x = Gdx.input.getX() * 2;
int y = Gdx.input.getY();
Из-за уменьшения области просмотра до части исходного экрана, но все методы обработки ввода предполагают, что касания экрана будут происходить из полноэкранного режима.