#pragma once #include #include #include #include #include #include #include #include #include #include namespace mbgl { namespace gfx { class Context; class UploadPass; } // namespace gfx class RenderStaticData { public: RenderStaticData(float pixelRatio, std::unique_ptr&& shaders_); void upload(gfx::UploadPass&); std::optional>> tileVertexBuffer; std::optional> rasterVertexBuffer; std::optional> heatmapTextureVertexBuffer; std::optional quadTriangleIndexBuffer; std::optional tileBorderIndexBuffer; static gfx::VertexVector> tileVertices(); static gfx::IndexVector quadTriangleIndices(); static gfx::IndexVector tileLineStripIndices(); static gfx::VertexVector rasterVertices(); static gfx::VertexVector heatmapTextureVertices(); static SegmentVector tileTriangleSegments(); static SegmentVector tileBorderSegments(); static SegmentVector rasterSegments(); static SegmentVector heatmapTextureSegments(); std::optional> depthRenderbuffer; bool has3D = false; bool uploaded = false; Size backendSize; // @TODO: Migrate away from and remove `Programs` Programs programs; std::unique_ptr shaders; const SegmentVector clippingMaskSegments; #ifndef NDEBUG Programs overdrawPrograms; #endif }; } // namespace mbgl