summaryrefslogtreecommitdiffstats
path: root/src/render/backend/attachmentpack.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/render/backend/attachmentpack.cpp')
-rw-r--r--src/render/backend/attachmentpack.cpp30
1 files changed, 23 insertions, 7 deletions
diff --git a/src/render/backend/attachmentpack.cpp b/src/render/backend/attachmentpack.cpp
index 59a832a66..a96e3affb 100644
--- a/src/render/backend/attachmentpack.cpp
+++ b/src/render/backend/attachmentpack.cpp
@@ -7,6 +7,13 @@
QT_BEGIN_NAMESPACE
+#ifndef GL_BACK_LEFT
+#define GL_BACK_LEFT 0x0402
+#endif
+#ifndef GL_BACK_RIGHT
+#define GL_BACK_RIGHT 0x0403
+#endif
+
namespace Qt3DRender {
namespace Render {
@@ -39,15 +46,24 @@ AttachmentPack::AttachmentPack(const RenderTarget *target,
// If nothing is specified, use all the attachments as draw buffers
if (drawBuffers.empty()) {
m_drawBuffers.reserve(m_attachments.size());
- for (const Attachment &attachment : std::as_const(m_attachments))
- // only consider Color Attachments
- if (attachment.m_point <= QRenderTargetOutput::Color15)
- m_drawBuffers.push_back((int) attachment.m_point);
+ for (const Attachment &attachment : std::as_const(m_attachments)) {
+ 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);
+ else if (attachment.m_point == QRenderTargetOutput::Right)
+ m_drawBuffers.push_back(GL_BACK_RIGHT);
+ }
} else {
m_drawBuffers.reserve(drawBuffers.size());
- for (QRenderTargetOutput::AttachmentPoint drawBuffer : drawBuffers)
- if (drawBuffer <= QRenderTargetOutput::Color15)
- m_drawBuffers.push_back((int) drawBuffer);
+ for (QRenderTargetOutput::AttachmentPoint drawBuffer : drawBuffers) {
+ 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);
+ else if (drawBuffer == QRenderTargetOutput::Right)
+ m_drawBuffers.push_back(GL_BACK_RIGHT);
+ }
}
}