diff options
author | Alexander Busse <alexander.busse@kdab.com> | 2024-03-19 16:12:04 +0100 |
---|---|---|
committer | Mike Krus <mike.krus@kdab.com> | 2024-03-19 15:32:59 +0000 |
commit | 34a079506ee9cf7fc692261aa2949a2e662ce45f (patch) | |
tree | 4c349eeff0cd6142bd32c62cb97ad65a0cea10f9 | |
parent | b0c34c08c2be22d3b5f27652d22ba1ae88ae069a (diff) |
fix stereo rendering
Change-Id: I1f55f4ce10107b5d4b3f92e1cb022a0c6595186b
Pick-to: 6.7 6.7.0
Task-number: QTBUG-123483
Reviewed-by: Mike Krus <mike.krus@kdab.com>
-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 303a36765..e81743110 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. */ /*! |