diff options
| author | Jules Blok <jules.blok@gmail.com> | 2014-10-31 16:24:35 +0100 |
|---|---|---|
| committer | Jules Blok <jules.blok@gmail.com> | 2014-11-23 14:27:39 +0100 |
| commit | f74d1b16ed397533b75d7f1fa910d0d901004819 (patch) | |
| tree | 8dfaf87df34a82a4bec7d65ddc2870da49999219 /Source/Core/VideoBackends/OGL/Render.cpp | |
| parent | 1261bd02caa0ca2503bdd52e7b37c22f8e0bcde5 (diff) | |
OGL: Add Top-and-Bottom stereoscopy mode.
Diffstat (limited to 'Source/Core/VideoBackends/OGL/Render.cpp')
| -rw-r--r-- | Source/Core/VideoBackends/OGL/Render.cpp | 30 |
1 files changed, 6 insertions, 24 deletions
diff --git a/Source/Core/VideoBackends/OGL/Render.cpp b/Source/Core/VideoBackends/OGL/Render.cpp index 484232f3cc..ff6f9f25df 100644 --- a/Source/Core/VideoBackends/OGL/Render.cpp +++ b/Source/Core/VideoBackends/OGL/Render.cpp @@ -1514,19 +1514,10 @@ void Renderer::SwapImpl(u32 xfbAddr, u32 fbWidth, u32 fbStride, u32 fbHeight, co sourceRc.right -= fbStride - fbWidth; - if (g_ActiveConfig.iStereoMode == STEREO_SBS) + if (g_ActiveConfig.iStereoMode == STEREO_SBS || g_ActiveConfig.iStereoMode == STEREO_TAB) { - // Resize target to half its original size - int width = drawRc.GetWidth(); - drawRc.left += width / 4; - drawRc.right -= width / 4; - - // Create two target rectangle offset to the sides of the backbuffer - TargetRectangle leftRc = drawRc, rightRc = drawRc; - leftRc.left -= s_backbuffer_width / 4; - leftRc.right -= s_backbuffer_width / 4; - rightRc.left += s_backbuffer_width / 4; - rightRc.right += s_backbuffer_width / 4; + TargetRectangle leftRc, rightRc; + ConvertStereoRectangle(flipped_trc, leftRc, rightRc); m_post_processor->BlitFromTexture(sourceRc, leftRc, xfbSource->texture, xfbSource->texWidth, xfbSource->texHeight, 0); m_post_processor->BlitFromTexture(sourceRc, rightRc, xfbSource->texture, xfbSource->texWidth, xfbSource->texHeight, 1); @@ -1544,19 +1535,10 @@ void Renderer::SwapImpl(u32 xfbAddr, u32 fbWidth, u32 fbStride, u32 fbHeight, co // for msaa mode, we must resolve the efb content to non-msaa GLuint tex = FramebufferManager::ResolveAndGetRenderTarget(rc); - if (g_ActiveConfig.iStereoMode == STEREO_SBS) + if (g_ActiveConfig.iStereoMode == STEREO_SBS || g_ActiveConfig.iStereoMode == STEREO_TAB) { - // Resize target to half its original size - int width = flipped_trc.GetWidth(); - flipped_trc.left += width / 4; - flipped_trc.right -= width / 4; - - // Create two target rectangle offset to the sides of the backbuffer - TargetRectangle leftRc = flipped_trc, rightRc = flipped_trc; - leftRc.left -= s_backbuffer_width / 4; - leftRc.right -= s_backbuffer_width / 4; - rightRc.left += s_backbuffer_width / 4; - rightRc.right += s_backbuffer_width / 4; + TargetRectangle leftRc, rightRc; + ConvertStereoRectangle(flipped_trc, leftRc, rightRc); m_post_processor->BlitFromTexture(targetRc, leftRc, tex, s_target_width, s_target_height, 0); m_post_processor->BlitFromTexture(targetRc, rightRc, tex, s_target_width, s_target_height, 1); |
