Files
MapLibreParticleLab/src/mbgl/renderer/renderer_impl.hpp
2023-12-09 06:22:43 +00:00

64 lines
1.2 KiB
C++

#pragma once
#include <mbgl/renderer/render_orchestrator.hpp>
#if MLN_RENDER_BACKEND_METAL
#include <mbgl/mtl/mtl_fwd.hpp>
#include <Foundation/Foundation.hpp>
#endif // MLN_RENDER_BACKEND_METAL
#include <memory>
#include <string>
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<std::string>& localFontFamily_);
~Impl();
private:
friend class Renderer;
void setObserver(RendererObserver*);
void render(const RenderTree&, const std::shared_ptr<UpdateParameters>&);
void reduceMemoryUse();
// TODO: Move orchestrator to Map::Impl.
RenderOrchestrator orchestrator;
gfx::RendererBackend& backend;
RendererObserver* observer;
const float pixelRatio;
std::unique_ptr<RenderStaticData> 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