1// Copyright (C) 2014 Klaralvdalens Datakonsult AB (KDAB).
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#include "qrendertargetselector.h"
5#include "qrendertargetselector_p.h"
6#include <Qt3DRender/qrendertarget.h>
7#include <Qt3DRender/private/qrenderpass_p.h>
8
9QT_BEGIN_NAMESPACE
10
11
12namespace Qt3DRender {
13using namespace Qt3DCore;
14
15/*!
16 \class Qt3DRender::QRenderTargetSelector
17 \inmodule Qt3DRender
18 \since 5.7
19 \brief Provides a way of specifying a render target.
20
21 A Qt3DRender::QRenderTargetSelector is used to select active Qt3DRender::QRenderTarget
22 for the FrameGraph. When QRenderTargetSelector is present in the FrameGraph,
23 the rendering is directed into QTexture objects or draw buffers instead of the surface
24 specified in the Qt3DRender::QRenderSurfaceSelector.
25 */
26
27/*!
28 \qmltype RenderTargetSelector
29 \inqmlmodule Qt3D.Render
30 \since 5.7
31 \nativetype Qt3DRender::QRenderTargetSelector
32 \inherits FrameGraphNode
33 \brief Provides a way of specifying a render target.
34
35 A RenderTargetSelector is used to select active RenderTarget
36 for the FrameGraph. When RenderTargetSelector is present in the FrameGraph,
37 the rendering is directed into Texture objects or draw buffers instead of the surface
38 specified in the RenderSurfaceSelector.
39 */
40
41QRenderTargetSelectorPrivate::QRenderTargetSelectorPrivate()
42 : QFrameGraphNodePrivate()
43 , m_target(nullptr)
44{
45}
46
47/*!
48 Constructs QRenderTargetSelector with given \a parent.
49 */
50QRenderTargetSelector::QRenderTargetSelector(QNode *parent)
51 : QFrameGraphNode(*new QRenderTargetSelectorPrivate, parent)
52{
53}
54
55/*! \internal */
56QRenderTargetSelector::~QRenderTargetSelector()
57{
58}
59
60/*!
61 \property Qt3DRender::QRenderTargetSelector::target
62 Holds the current render target
63 */
64
65/*! \qmlproperty RenderTarget Qt3D.Render::RenderTargetSelector::target
66
67 Holds the current render target
68 */
69void QRenderTargetSelector::setTarget(QRenderTarget *target)
70{
71 Q_D(QRenderTargetSelector);
72 if (d->m_target != target) {
73
74 if (d->m_target)
75 d->unregisterDestructionHelper(node: d->m_target);
76
77 // For inline declaration cases
78 if (target != nullptr && !target->parent())
79 target->setParent(this);
80
81 d->m_target = target;
82
83 if (d->m_target)
84 d->registerDestructionHelper(node: d->m_target, func: &QRenderTargetSelector::setTarget, d->m_target);
85
86 emit targetChanged(target);
87 }
88}
89
90QRenderTarget *QRenderTargetSelector::target() const
91{
92 Q_D(const QRenderTargetSelector);
93 return d->m_target;
94}
95
96/*! \internal */
97QRenderTargetSelector::QRenderTargetSelector(QRenderTargetSelectorPrivate &dd, QNode *parent)
98 : QFrameGraphNode(dd, parent)
99{
100}
101
102} // namespace Qt3DRender
103
104QT_END_NAMESPACE
105
106#include "moc_qrendertargetselector.cpp"
107

Provided by KDAB

Privacy Policy
Start learning QML with our Intro Training
Find out more

source code of qt3d/src/render/framegraph/qrendertargetselector.cpp