summaryrefslogtreecommitdiffstats
path: root/src/runtimerender/rendererimpl/Qt3DSRendererImpl.cpp
diff options
context:
space:
mode:
authorKaj Grönholm <kaj.gronholm@qt.io>2019-10-09 20:51:39 +0300
committerKaj Grönholm <kaj.gronholm@qt.io>2019-10-11 13:10:32 +0300
commit7da61c9da6b885fa90d274d220c2bcef2553b006 (patch)
treefbd473eff154ab42133ff14724e87128892b9922 /src/runtimerender/rendererimpl/Qt3DSRendererImpl.cpp
parentd0cfd79d940bd9ed4dd63334ecf686fa013eaf37 (diff)
Add anaglyph stereoscopic modes into opengl runtime
Implement also anaglyph red-cyan & green-magenta stereoscopic modes for opengl runtime. APIs for C++ and QML. Add options into viewer. Task-number: QT3DS-3981 Change-Id: Idb9f659b3799e954253e37045c1a3b2a55fb2779 Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io> Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io> Reviewed-by: Antti Määttä <antti.maatta@qt.io>
Diffstat (limited to 'src/runtimerender/rendererimpl/Qt3DSRendererImpl.cpp')
-rw-r--r--src/runtimerender/rendererimpl/Qt3DSRendererImpl.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/runtimerender/rendererimpl/Qt3DSRendererImpl.cpp b/src/runtimerender/rendererimpl/Qt3DSRendererImpl.cpp
index 04b08c1..99d5c45 100644
--- a/src/runtimerender/rendererimpl/Qt3DSRendererImpl.cpp
+++ b/src/runtimerender/rendererimpl/Qt3DSRendererImpl.cpp
@@ -1142,6 +1142,24 @@ namespace render {
theShader->m_Dimensions.Set(inDimensions);
theShader->m_Sampler.Set(&inQuadTexture);
+ // Set anaglyph color multiplier based on mode & current eye
+ // Default non-anaglyph modes use just vec4(1.0,1.0,1.0,1.0)
+ auto stereoMode = m_qt3dsContext.GetStereoMode();
+ auto stereoView = m_qt3dsContext.GetStereoView();
+ QT3DSVec4 anaglyphColor(1.0);
+ if (stereoMode == StereoModes::AnaglyphRedCyan) {
+ if (stereoView == StereoViews::Left)
+ anaglyphColor = QT3DSVec4(1.0, 0.0, 0.0, 0.0);
+ else
+ anaglyphColor = QT3DSVec4(0.0, 1.0, 1.0, 0.0);
+ } else if (stereoMode == StereoModes::AnaglyphGreenMagenta) {
+ if (stereoView == StereoViews::Left)
+ anaglyphColor = QT3DSVec4(0.0, 1.0, 0.0, 0.0);
+ else
+ anaglyphColor = QT3DSVec4(1.0, 0.0, 1.0, 0.0);
+ }
+ theShader->m_anaglyphColor.Set(anaglyphColor);
+
GenerateXYQuad();
theContext.SetInputAssembler(m_QuadInputAssembler);
theContext.Draw(NVRenderDrawMode::Triangles, m_QuadIndexBuffer->GetNumIndices(), 0);