#pragma once #include #if MLN_RENDER_BACKEND_METAL #include #include #endif // MLN_RENDER_BACKEND_METAL #include #include namespace mbgl { class RendererObserver; class RenderStaticData; class RenderTree; namespace gfx { class RendererBackend; class ShadeRegistry; } // namespace gfx class Renderer::Impl { public: Impl(gfx::RendererBackend&, float pixelRatio_, const std::optional& localFontFamily_); ~Impl(); private: friend class Renderer; void setObserver(RendererObserver*); void render(const RenderTree&, const std::shared_ptr&); void reduceMemoryUse(); // TODO: Move orchestrator to Map::Impl. RenderOrchestrator orchestrator; gfx::RendererBackend& backend; RendererObserver* observer; const float pixelRatio; std::unique_ptr staticData; enum class RenderState { Never, Partial, Fully, }; RenderState renderState = RenderState::Never; uint64_t frameCount = 0; #if MLN_RENDER_BACKEND_METAL mtl::MTLCaptureScopePtr commandCaptureScope; #endif // MLN_RENDER_BACKEND_METAL }; } // namespace mbgl