diff --git a/drape/debug_rect_renderer.cpp b/drape/debug_rect_renderer.cpp index c4f9353298..5f422600ad 100644 --- a/drape/debug_rect_renderer.cpp +++ b/drape/debug_rect_renderer.cpp @@ -12,8 +12,10 @@ namespace m2::PointF PixelPointToScreenSpace(ScreenBase const & screen, m2::PointF const & pt) { - float const szX = static_cast(screen.PixelRect().SizeX()); - float const szY = static_cast(screen.PixelRect().SizeY()); + float const szX = static_cast(screen.isPerspective() ? screen.PixelRectIn3d().SizeX() : + screen.PixelRect().SizeX()); + float const szY = static_cast(screen.isPerspective() ? screen.PixelRectIn3d().SizeY() : + screen.PixelRect().SizeY()); return m2::PointF(pt.x / szX - 0.5f, -pt.y / szY + 0.5f) * 2.0f; } diff --git a/drape/render_bucket.cpp b/drape/render_bucket.cpp index f3ef8877c0..ce031e9f54 100644 --- a/drape/render_bucket.cpp +++ b/drape/render_bucket.cpp @@ -109,10 +109,18 @@ void RenderBucket::RenderDebug(ScreenBase const & screen) const { for (auto const & handle : m_overlay) { + if (!screen.PixelRect().IsIntersect(handle->GetPixelRect(screen, false))) + continue; + OverlayHandle::Rects rects; handle->GetExtendedPixelShape(screen, rects); for (auto const & rect : rects) + { + if (screen.isPerspective() && !screen.PixelRectIn3d().IsIntersect(m2::RectD(rect))) + continue; + DebugRectRenderer::Instance().DrawRect(screen, rect); + } } } #endif