diff options
author | Alexander Busse <alexander.busse@kdab.com> | 2024-03-19 16:12:04 +0100 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2024-03-20 08:10:50 +0000 |
commit | a056f27dc9ad83f9c55295b26f90a37060b26d58 (patch) | |
tree | 8e6583a98d0f794721f0f99c5031ee008c97e09c | |
parent | ce54c2c316bb704c45957e166fa739eddd93ca94 (diff) |
fix stereo rendering
Change-Id: I1f55f4ce10107b5d4b3f92e1cb022a0c6595186b
Task-number: QTBUG-123483
Reviewed-by: Mike Krus <mike.krus@kdab.com>
(cherry picked from commit 34a079506ee9cf7fc692261aa2949a2e662ce45f)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
(cherry picked from commit 8dadce1681e2f0cd56693012bff68f9d22ac00a4)
-rw-r--r-- | src/render/backend/attachmentpack.cpp | 24 | ||||
-rw-r--r-- | src/render/frontend/qrendertargetoutput.cpp | 2 |
2 files changed, 9 insertions, 17 deletions
diff --git a/src/render/backend/attachmentpack.cpp b/src/render/backend/attachmentpack.cpp index cf7566e23..a96e3affb 100644 --- a/src/render/backend/attachmentpack.cpp +++ b/src/render/backend/attachmentpack.cpp @@ -47,30 +47,22 @@ AttachmentPack::AttachmentPack(const RenderTarget *target, if (drawBuffers.empty()) { m_drawBuffers.reserve(m_attachments.size()); for (const Attachment &attachment : std::as_const(m_attachments)) { - switch (attachment.m_point) { - case QRenderTargetOutput::Left: + if (attachment.m_point >= QRenderTargetOutput::Color0 && attachment.m_point <= QRenderTargetOutput::Color15) + m_drawBuffers.push_back((int)attachment.m_point); + else if (attachment.m_point == QRenderTargetOutput::Left) m_drawBuffers.push_back(GL_BACK_LEFT); - case QRenderTargetOutput::Right: + else if (attachment.m_point == QRenderTargetOutput::Right) m_drawBuffers.push_back(GL_BACK_RIGHT); - default: - if (attachment.m_point >= QRenderTargetOutput::Color0 && attachment.m_point <= QRenderTargetOutput::Color15) - m_drawBuffers.push_back((int) attachment.m_point); - break; - } } } else { m_drawBuffers.reserve(drawBuffers.size()); for (QRenderTargetOutput::AttachmentPoint drawBuffer : drawBuffers) { - switch (drawBuffer) { - case QRenderTargetOutput::Left: + if (drawBuffer >= QRenderTargetOutput::Color0 && drawBuffer <= QRenderTargetOutput::Color15) + m_drawBuffers.push_back((int)drawBuffer); + else if (drawBuffer == QRenderTargetOutput::Left) m_drawBuffers.push_back(GL_BACK_LEFT); - case QRenderTargetOutput::Right: + else if (drawBuffer == QRenderTargetOutput::Right) m_drawBuffers.push_back(GL_BACK_RIGHT); - default: - if (drawBuffer >= QRenderTargetOutput::Color0 && drawBuffer <= QRenderTargetOutput::Color15) - m_drawBuffers.push_back((int) drawBuffer); - break; - } } } } diff --git a/src/render/frontend/qrendertargetoutput.cpp b/src/render/frontend/qrendertargetoutput.cpp index 3be19a2b4..553c668dc 100644 --- a/src/render/frontend/qrendertargetoutput.cpp +++ b/src/render/frontend/qrendertargetoutput.cpp @@ -40,7 +40,7 @@ namespace Qt3DRender { RenderTargetOutput must be compatible with the given parameters. \note Left and Right attachment points are special values. They do not refer to - render target objects to be either of the back buffers used for stereo rendering. + render target objects, but rather to either of the back buffers used for stereo rendering. */ /*! |