summaryrefslogtreecommitdiff
path: root/Source/Core/VideoBackends/OGL/Render.cpp
diff options
context:
space:
mode:
authorJules Blok <jules.blok@gmail.com>2014-10-31 16:24:35 +0100
committerJules Blok <jules.blok@gmail.com>2014-11-23 14:27:39 +0100
commitf74d1b16ed397533b75d7f1fa910d0d901004819 (patch)
tree8dfaf87df34a82a4bec7d65ddc2870da49999219 /Source/Core/VideoBackends/OGL/Render.cpp
parent1261bd02caa0ca2503bdd52e7b37c22f8e0bcde5 (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.cpp30
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);