Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorr.kuznetsov <r.kuznetsov@corp.mail.ru>2018-07-30 14:35:44 +0300
committerArsentiy Milchakov <milcars@mapswithme.com>2018-07-31 19:32:18 +0300
commit14669f9b66df39f8ca37bc26f2ee869708b6353d (patch)
tree2f8b64e5fc61304016d065581a8f062666b9de34 /drape_frontend
parent077fea7edb398a87132fea0dbb0dbc63e3e0e9a1 (diff)
Fixed false depth-stencil usage on OpenGLES 2.0
Diffstat (limited to 'drape_frontend')
-rwxr-xr-xdrape_frontend/frontend_renderer.cpp4
-rw-r--r--drape_frontend/postprocess_renderer.cpp24
-rw-r--r--drape_frontend/postprocess_renderer.hpp14
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