1// Copyright (C) 2017 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 <Qt3DRender/private/qblitframebuffer_p.h>
5#include <Qt3DRender/private/blitframebuffer_p.h>
6
7QT_BEGIN_NAMESPACE
8
9
10namespace Qt3DRender {
11namespace Render {
12
13using namespace Qt3DCore;
14
15BlitFramebuffer::BlitFramebuffer()
16 : FrameGraphNode(FrameGraphNode::BlitFramebuffer)
17 , m_sourceRenderTargetId(Qt3DCore::QNodeId())
18 , m_destinationRenderTargetId(Qt3DCore::QNodeId())
19 , m_sourceRect(QRect())
20 , m_destinationRect(QRect())
21 , m_sourceAttachmentPoint(Qt3DRender::QRenderTargetOutput::Color0)
22 , m_destinationAttachmentPoint(Qt3DRender::QRenderTargetOutput::Color0)
23 , m_interpolationMethod(Qt3DRender::QBlitFramebuffer::Linear)
24{
25}
26
27void BlitFramebuffer::syncFromFrontEnd(const Qt3DCore::QNode *frontEnd, bool firstTime)
28{
29 const QBlitFramebuffer *node = qobject_cast<const QBlitFramebuffer *>(object: frontEnd);
30 if (!node)
31 return;
32
33 FrameGraphNode::syncFromFrontEnd(frontEnd, firstTime);
34
35 if (node->sourceRect().toRect() != m_sourceRect) {
36 m_sourceRect = node->sourceRect().toRect();
37 markDirty(changes: AbstractRenderer::FrameGraphDirty);
38 }
39 if (node->destinationRect().toRect() != m_destinationRect) {
40 m_destinationRect = node->destinationRect().toRect();
41 markDirty(changes: AbstractRenderer::FrameGraphDirty);
42 }
43 if (node->sourceAttachmentPoint() != m_sourceAttachmentPoint) {
44 m_sourceAttachmentPoint = node->sourceAttachmentPoint();
45 markDirty(changes: AbstractRenderer::FrameGraphDirty);
46 }
47 if (node->destinationAttachmentPoint() != m_destinationAttachmentPoint) {
48 m_destinationAttachmentPoint = node->destinationAttachmentPoint();
49 markDirty(changes: AbstractRenderer::FrameGraphDirty);
50 }
51 if (node->interpolationMethod() != m_interpolationMethod) {
52 m_interpolationMethod = node->interpolationMethod();
53 markDirty(changes: AbstractRenderer::FrameGraphDirty);
54 }
55 const QNodeId destinationNodeId = qIdForNode(node: node->destination());
56 if (destinationNodeId != m_destinationRenderTargetId) {
57 m_destinationRenderTargetId = destinationNodeId;
58 markDirty(changes: AbstractRenderer::FrameGraphDirty);
59 }
60 const QNodeId sourceNodeId = qIdForNode(node: node->source());
61 if (sourceNodeId != m_sourceRenderTargetId) {
62 m_sourceRenderTargetId = sourceNodeId;
63 markDirty(changes: AbstractRenderer::FrameGraphDirty);
64 }
65}
66
67Qt3DRender::QRenderTargetOutput::AttachmentPoint BlitFramebuffer::destinationAttachmentPoint() const
68{
69 return m_destinationAttachmentPoint;
70}
71
72QBlitFramebuffer::InterpolationMethod BlitFramebuffer::interpolationMethod() const
73{
74 return m_interpolationMethod;
75}
76
77Qt3DRender::QRenderTargetOutput::AttachmentPoint BlitFramebuffer::sourceAttachmentPoint() const
78{
79 return m_sourceAttachmentPoint;
80}
81
82QRect BlitFramebuffer::destinationRect() const
83{
84 return m_destinationRect;
85}
86
87QRect BlitFramebuffer::sourceRect() const
88{
89 return m_sourceRect;
90}
91
92Qt3DCore::QNodeId BlitFramebuffer::destinationRenderTargetId() const
93{
94 return m_destinationRenderTargetId;
95}
96
97Qt3DCore::QNodeId BlitFramebuffer::sourceRenderTargetId() const
98{
99 return m_sourceRenderTargetId;
100}
101
102} // namespace Render
103} // namespace Qt3DRender
104
105QT_END_NAMESPACE
106

Provided by KDAB

Privacy Policy
Learn Advanced QML with KDAB
Find out more

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