diff options
author | Kaj Grönholm <kaj.gronholm@qt.io> | 2019-10-09 20:51:39 +0300 |
---|---|---|
committer | Kaj Grönholm <kaj.gronholm@qt.io> | 2019-10-11 13:10:32 +0300 |
commit | 7da61c9da6b885fa90d274d220c2bcef2553b006 (patch) | |
tree | fbd473eff154ab42133ff14724e87128892b9922 /src/runtimerender/rendererimpl/Qt3DSRendererImpl.cpp | |
parent | d0cfd79d940bd9ed4dd63334ecf686fa013eaf37 (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.cpp | 18 |
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); |