diff options
author | r.kuznetsov <r.kuznetsov@corp.mail.ru> | 2018-07-30 14:35:44 +0300 |
---|---|---|
committer | Arsentiy Milchakov <milcars@mapswithme.com> | 2018-07-31 19:32:18 +0300 |
commit | 14669f9b66df39f8ca37bc26f2ee869708b6353d (patch) | |
tree | 2f8b64e5fc61304016d065581a8f062666b9de34 /drape_frontend | |
parent | 077fea7edb398a87132fea0dbb0dbc63e3e0e9a1 (diff) |
Fixed false depth-stencil usage on OpenGLES 2.0
Diffstat (limited to 'drape_frontend')
-rwxr-xr-x | drape_frontend/frontend_renderer.cpp | 4 | ||||
-rw-r--r-- | drape_frontend/postprocess_renderer.cpp | 24 | ||||
-rw-r--r-- | drape_frontend/postprocess_renderer.hpp | 14 |
3 files changed, 22 insertions, 20 deletions
diff --git a/drape_frontend/frontend_renderer.cpp b/drape_frontend/frontend_renderer.cpp index 84cbe0ede4..d10dddf7f8 100755 --- a/drape_frontend/frontend_renderer.cpp +++ b/drape_frontend/frontend_renderer.cpp @@ -1999,7 +1999,9 @@ void FrontendRenderer::OnContextCreate() m_postprocessRenderer->SetEffectEnabled(PostprocessRenderer::Antialiasing, true); #endif - m_buildingsFramebuffer = make_unique_dp<dp::Framebuffer>(gl_const::GLRGBA, false /* stencilEnabled */); + m_buildingsFramebuffer = make_unique_dp<dp::Framebuffer>(gl_const::GLRGBA, + true /* depthEnabled */, + false /* stencilEnabled */); m_buildingsFramebuffer->SetFramebufferFallback([this]() { return m_postprocessRenderer->OnFramebufferFallback(); diff --git a/drape_frontend/postprocess_renderer.cpp b/drape_frontend/postprocess_renderer.cpp index ec0012e338..e631756876 100644 --- a/drape_frontend/postprocess_renderer.cpp +++ b/drape_frontend/postprocess_renderer.cpp @@ -178,10 +178,11 @@ private: gpu::ScreenQuadProgramParams m_params; }; -void InitFramebuffer(drape_ptr<dp::Framebuffer> & framebuffer, uint32_t width, uint32_t height) +void InitFramebuffer(drape_ptr<dp::Framebuffer> & framebuffer, uint32_t width, uint32_t height, + bool depthEnabled, bool stencilEnabled) { if (framebuffer == nullptr) - framebuffer = make_unique_dp<dp::Framebuffer>(gl_const::GLRGBA, true /* stencilEnabled */); + framebuffer = make_unique_dp<dp::Framebuffer>(gl_const::GLRGBA, depthEnabled, stencilEnabled); framebuffer->SetSize(width, height); } @@ -202,17 +203,10 @@ bool IsSupported(drape_ptr<dp::Framebuffer> const & framebuffer) } // namespace PostprocessRenderer::PostprocessRenderer() - : m_effects(0) - , m_width(0) - , m_height(0) - , m_isMainFramebufferRendered(false) - , m_isSmaaFramebufferRendered(false) - , m_edgesRendererContext(make_unique_dp<EdgesRendererContext>()) + : m_edgesRendererContext(make_unique_dp<EdgesRendererContext>()) , m_bwRendererContext(make_unique_dp<BlendingWeightRendererContext>()) , m_smaaFinalRendererContext(make_unique_dp<SMAAFinalRendererContext>()) , m_defaultScreenQuadContext(make_unique_dp<DefaultScreenQuadContext>()) - , m_frameStarted(false) - , m_isRouteFollowingActive(false) {} PostprocessRenderer::~PostprocessRenderer() @@ -427,19 +421,25 @@ void PostprocessRenderer::UpdateFramebuffers(uint32_t width, uint32_t height) ASSERT_NOT_EQUAL(width, 0, ()); ASSERT_NOT_EQUAL(height, 0, ()); - InitFramebuffer(m_mainFramebuffer, width, height); + InitFramebuffer(m_mainFramebuffer, width, height, + true /* depthEnabled */, + m_apiVersion != dp::ApiVersion::OpenGLES2 /* stencilEnabled */); m_isMainFramebufferRendered = false; m_isSmaaFramebufferRendered = false; if (IsEffectEnabled(Effect::Antialiasing)) { + CHECK(m_apiVersion != dp::ApiVersion::OpenGLES2, ()); + InitFramebuffer(m_edgesFramebuffer, gl_const::GLRedGreen, m_mainFramebuffer->GetDepthStencilRef(), width, height); InitFramebuffer(m_blendingWeightFramebuffer, gl_const::GLRGBA, m_mainFramebuffer->GetDepthStencilRef(), width, height); - InitFramebuffer(m_smaaFramebuffer, width, height); + InitFramebuffer(m_smaaFramebuffer, gl_const::GLRGBA, + m_mainFramebuffer->GetDepthStencilRef(), + width, height); } else { diff --git a/drape_frontend/postprocess_renderer.hpp b/drape_frontend/postprocess_renderer.hpp index e78baa07b8..c717e9f788 100644 --- a/drape_frontend/postprocess_renderer.hpp +++ b/drape_frontend/postprocess_renderer.hpp @@ -61,28 +61,28 @@ private: bool CanRenderAntialiasing() const; dp::ApiVersion m_apiVersion; - uint32_t m_effects; + uint32_t m_effects = 0; drape_ptr<ScreenQuadRenderer> m_screenQuadRenderer; dp::FramebufferFallback m_framebufferFallback; drape_ptr<PostprocessStaticTextures> m_staticTextures; - uint32_t m_width; - uint32_t m_height; + uint32_t m_width = 0; + uint32_t m_height = 0; drape_ptr<dp::Framebuffer> m_mainFramebuffer; - bool m_isMainFramebufferRendered; + bool m_isMainFramebufferRendered = false; drape_ptr<dp::Framebuffer> m_edgesFramebuffer; drape_ptr<dp::Framebuffer> m_blendingWeightFramebuffer; drape_ptr<dp::Framebuffer> m_smaaFramebuffer; - bool m_isSmaaFramebufferRendered; + bool m_isSmaaFramebufferRendered = false; drape_ptr<RendererContext> m_edgesRendererContext; drape_ptr<RendererContext> m_bwRendererContext; drape_ptr<RendererContext> m_smaaFinalRendererContext; drape_ptr<RendererContext> m_defaultScreenQuadContext; - bool m_frameStarted; - bool m_isRouteFollowingActive; + bool m_frameStarted = false; + bool m_isRouteFollowingActive = false; }; class StencilWriterGuard |