diff --git a/drape_frontend/frontend_renderer.cpp b/drape_frontend/frontend_renderer.cpp index e3893092ce..5c94bf82a3 100755 --- a/drape_frontend/frontend_renderer.cpp +++ b/drape_frontend/frontend_renderer.cpp @@ -1161,9 +1161,11 @@ void FrontendRenderer::RenderUserMarksLayer(ScreenBase const & modelView) for (auto const & group : m_userMarkRenderGroups) { ASSERT(group.get() != nullptr, ()); - if (m_userMarkVisibility.find(group->GetLayerId()) != m_userMarkVisibility.end() && - screenRect.IsIntersect(group->GetTileKey().GetGlobalRect())) - RenderSingleGroup(modelView, make_ref(group)); + if (m_userMarkVisibility.find(group->GetLayerId()) != m_userMarkVisibility.end()) + { + if (!group->CanBeClipped() || screenRect.IsIntersect(group->GetTileKey().GetGlobalRect())) + RenderSingleGroup(modelView, make_ref(group)); + } } } diff --git a/drape_frontend/render_group.cpp b/drape_frontend/render_group.cpp index 4199936a10..ea9633c380 100755 --- a/drape_frontend/render_group.cpp +++ b/drape_frontend/render_group.cpp @@ -242,6 +242,11 @@ size_t UserMarkRenderGroup::GetLayerId() const return m_layerId; } +bool UserMarkRenderGroup::CanBeClipped() const +{ + return m_state.GetProgramIndex() != gpu::LINE_PROGRAM; +} + string DebugPrint(RenderGroup const & group) { ostringstream out; diff --git a/drape_frontend/render_group.hpp b/drape_frontend/render_group.hpp index c28fdd2ca1..8c99d1b86f 100755 --- a/drape_frontend/render_group.hpp +++ b/drape_frontend/render_group.hpp @@ -105,6 +105,8 @@ public: size_t GetLayerId() const; + bool CanBeClipped() const; + private: drape_ptr m_renderBucket; unique_ptr m_animation;