В этом примере четыре вида создаются с использованием классов Viewport и CameraSelector .
Класс Viewport
Класс Viewport
определяет часть экрана, к которой относится ветвь фрейма графа (частью которого является Viewport
).Часть определяется как (x, y, width, height)
.Координаты всего экрана (0, 0, 1, 1)
.
Если вы посмотрите на класс QuadViewportFrameGraph
, который является частью примера, вы увидите четыре определенных окна просмотра - по одному для каждой камеры.Верхняя левая камера отображает прямоугольник (0, 0, 0.5, 0.5)
экрана.С другой стороны, верхняя правая камера отображает (0.5, 0, 0.5, 0.5)
, т.е. использует половину размера экрана в качестве смещения x
.
Класс CameraSelector
Этот класс определяет, какую камеру использует ветвь framegraph для визуализации контента.Если вы посмотрите на пример, вы увидите CameraSelector { id: someCamera }
в каждом Viewport
экземпляре.Таким образом, каждый Viewport
получает свою собственную камеру.
Заключение
Если вам нужен только один вид, удалите четыре Viewports
из основного Viewport
и добавить один селектор камеры в качестве дочернего элемента.Таким образом, ваш QuadViewportFrameGraph
должен выглядеть следующим образом (без операторов импорта):
RenderSettings {
id: quadViewportFrameGraph
property alias camera: cameraSelector.camera;
property alias window: surfaceSelector.surface
activeFrameGraph: RenderSurfaceSelector {
id: surfaceSelector
Viewport {
id: mainViewport
normalizedRect: Qt.rect(0, 0, 1, 1)
ClearBuffers {
buffers: ClearBuffers.ColorDepthBuffer
clearColor: Qt.rgba(0.6, 0.6, 0.6, 1.0)
CameraSelector { id: cameraSelector }
}
}
}
}
Конечно, вам также нужно настроить код, в котором вы создаете экземпляр QuadViewportFrameGraph
, и установить только одну камеру.Если вы хотите, чтобы все четыре вида отображались в отдельных виджетах, вам нужно создать четыре 3D-окна и оконные контейнеры и такую диаграмму кадров для каждого (конечно, с разными камерами).
Но имейте в виду, что производительность может быть дрянной, если вы создаете отдельные 3D-окна.Насколько я знаю, других решений для получения 3D-виджетов нет.