diff options
| author | Jules Blok <jules.blok@gmail.com> | 2014-12-20 16:48:57 +0100 |
|---|---|---|
| committer | Jules Blok <jules.blok@gmail.com> | 2014-12-24 17:22:22 +0100 |
| commit | 12412ac5b70266176982ae74a2bd4a8ba333f8f9 (patch) | |
| tree | 59dfbbd9ffd4ead89bdc16c4796a2d75aaabb1f0 /Source/Core/VideoBackends/OGL/FramebufferManager.cpp | |
| parent | 5526b3932018cfd9245fe76848861b8a0ceae3bf (diff) | |
FramebufferManager: Copy all EFB layers to the XFB framebuffer.
Diffstat (limited to 'Source/Core/VideoBackends/OGL/FramebufferManager.cpp')
| -rw-r--r-- | Source/Core/VideoBackends/OGL/FramebufferManager.cpp | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/Source/Core/VideoBackends/OGL/FramebufferManager.cpp b/Source/Core/VideoBackends/OGL/FramebufferManager.cpp index 731cf389d2..cd37e228a4 100644 --- a/Source/Core/VideoBackends/OGL/FramebufferManager.cpp +++ b/Source/Core/VideoBackends/OGL/FramebufferManager.cpp @@ -509,17 +509,20 @@ void XFBSource::CopyEFB(float Gamma) g_renderer->ResetAPIState(); // Copy EFB data to XFB and restore render target again - glBindFramebuffer(GL_READ_FRAMEBUFFER, FramebufferManager::GetEFBFramebuffer()); glBindFramebuffer(GL_DRAW_FRAMEBUFFER, FramebufferManager::GetXFBFramebuffer()); - // Bind texture. - FramebufferManager::FramebufferTexture(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D_ARRAY, texture, 0); - - glBlitFramebuffer( - 0, 0, texWidth, texHeight, - 0, 0, texWidth, texHeight, - GL_COLOR_BUFFER_BIT, GL_NEAREST - ); + for (int i = 0; i < m_layers; i++) + { + // Bind EFB and texture layer + glBindFramebuffer(GL_READ_FRAMEBUFFER, FramebufferManager::GetEFBFramebuffer(i)); + glFramebufferTextureLayer(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, texture, 0, i); + + glBlitFramebuffer( + 0, 0, texWidth, texHeight, + 0, 0, texWidth, texHeight, + GL_COLOR_BUFFER_BIT, GL_NEAREST + ); + } // Return to EFB. FramebufferManager::SetFramebuffer(0); |
