156void QQuick3DPerspectiveCamera::setFieldOfView(
float fieldOfView)
158 if (qFuzzyCompare(m_fieldOfView, fieldOfView))
161 m_fieldOfView = fieldOfView;
162 emit fieldOfViewChanged();
166void QQuick3DPerspectiveCamera::setFieldOfViewOrientation(QQuick3DPerspectiveCamera::FieldOfViewOrientation
167 fieldOfViewOrientation)
169 if (m_fieldOfViewOrientation == fieldOfViewOrientation)
172 m_fieldOfViewOrientation = fieldOfViewOrientation;
173 emit fieldOfViewOrientationChanged();
177QSSGRenderGraphObject *QQuick3DPerspectiveCamera::updateSpatialNode(QSSGRenderGraphObject *node)
179 QSSGRenderCamera *camera =
static_cast<QSSGRenderCamera *>(QQuick3DCamera::updateSpatialNode(node));
181 QSSGRenderCamera::FieldOfView fov;
182 switch (m_fieldOfViewOrientation) {
183 case QQuick3DPerspectiveCamera::Vertical:
184 fov = QSSGRenderCamera::FieldOfView::fromDegrees(m_fieldOfView);
186 case QQuick3DPerspectiveCamera::Horizontal:
187 fov = QSSGRenderCamera::FieldOfView::fromDegrees<QSSGRenderCamera::FieldOfView::Orientation::Horizontal>(m_fieldOfView);
191 const bool changed = ((
int(qUpdateIfNeeded(camera->clipPlanes, {m_clipNear, m_clipFar}))
192 |
int(qUpdateIfNeeded(camera->fov, fov))) != 0);
194 camera->markDirty(QSSGRenderCamera::DirtyFlag::CameraDirty);