#pragma once #include #include #include #include #include #include namespace mbgl { class OutlinePatternShader; class PlainShader; class PatternShader; class OutlineShader; class FillBucket : public Bucket { public: FillBucket(); ~FillBucket() override; void upload(gl::ObjectStore&, gl::Config&) override; void render(Painter&, PaintParameters&, const style::Layer&, const RenderTile&) override; bool hasData() const override; bool needsClipping() const override; void addGeometry(const GeometryCollection&); void drawElements(PlainShader&, gl::ObjectStore&, bool overdraw); void drawElements(PatternShader&, gl::ObjectStore&, bool overdraw); void drawVertices(OutlineShader&, gl::ObjectStore&, bool overdraw); void drawVertices(OutlinePatternShader&, gl::ObjectStore&, bool overdraw); private: FillVertexBuffer vertexBuffer; TriangleElementsBuffer triangleElementsBuffer; LineElementsBuffer lineElementsBuffer; typedef ElementGroup<4> TriangleGroup; typedef ElementGroup<4> LineGroup; std::vector> triangleGroups; std::vector> lineGroups; }; } // namespace mbgl