summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Busse <alexander.busse@kdab.com>2024-03-19 16:12:04 +0100
committerMike Krus <mike.krus@kdab.com>2024-03-19 15:32:59 +0000
commit34a079506ee9cf7fc692261aa2949a2e662ce45f (patch)
tree4c349eeff0cd6142bd32c62cb97ad65a0cea10f9
parentb0c34c08c2be22d3b5f27652d22ba1ae88ae069a (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.cpp24
-rw-r--r--src/render/frontend/qrendertargetoutput.cpp2
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.
*/
/*!