5#ifndef QSSG_RENDER_CAMERA_H
6#define QSSG_RENDER_CAMERA_H
19#include <QtQuick3DRuntimeRender/private/qtquick3druntimerenderglobal_p.h>
21#include <QtQuick3DRuntimeRender/private/qssgrendernode_p.h>
22#include <QtQuick3DRuntimeRender/private/qssgrenderray_p.h>
24#include <QtQuick3DUtils/private/qssgrenderbasetypes_p.h>
40 using FlagT = std::underlying_type_t<DirtyFlag>;
42 static constexpr DirtyFlag DirtyMask { std::numeric_limits<FlagT>::max() };
56 float horizontalMagnification = 1.0f;
57 float verticalMagnification = 1.0f;
68 float levelOfDetailPixelThreshold = 1.0;
83 bool calculateProjection(
const QRectF &inViewport);
84 bool computeFrustumOrtho(
const QRectF &inViewport);
89 float getOrthographicScaleFactor(
const QRectF &inViewport)
const;
90 bool computeFrustumPerspective(
const QRectF &inViewport);
91 bool computeCustomFrustum(
const QRectF &inViewport);
93 void calculateViewProjectionMatrix(
QMatrix4x4 &outMatrix)
const;
95 void calculateViewProjectionWithoutTranslation(
float near,
float far,
QMatrix4x4 &outMatrix)
const;
106 float verticalFov(
float aspectRatio)
const;
107 float verticalFov(
const QRectF &inViewport)
const;
111 return ((cameraDirtyFlags &
FlagT(dirtyFlag)) != 0)
117 float getLevelOfDetailMultiplier()
const;
The QMatrix4x4 class represents a 4x4 transformation matrix in 3D space.
\inmodule QtCore\reentrant
The QVector2D class represents a vector or vertex in 2D space.
The QVector3D class represents a vector or vertex in 3D space.
Combined button and popup list for selecting options.
GLdouble GLdouble GLdouble GLdouble top
static QT_BEGIN_NAMESPACE qreal dpr(const QWindow *w)
bool m_computeFrustumSucceeded
std::underlying_type_t< DirtyFlag > FlagT
bool enableFrustumClipping
QMatrix3x3 getLookAtMatrix(const QVector3D &inUpDir, const QVector3D &inDirection) const
bool isDirty(DirtyFlag dirtyFlag=DirtyMask) const
QRectF previousInViewport
bool calculateGlobalVariables()
void clearDirty(DirtyFlag dirtyFlag)
std::underlying_type_t< DirtyFlag > FlagT
constexpr bool isDirty(DirtyFlag dirtyFlag=DirtyFlag::DirtyMask) const
void markDirty(DirtyFlag dirtyFlag)