diff options
Diffstat (limited to 'src/render/backend/attachmentpack.cpp')
-rw-r--r-- | src/render/backend/attachmentpack.cpp | 30 |
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); + } } } |