#pragma once #include #include #include #include #include namespace mbgl { class CircleVertexBuffer; class CircleShader; class CircleBucket : public Bucket { using TriangleGroup = ElementGroup<3>; public: CircleBucket(const MapMode); ~CircleBucket() override; void upload(gl::ObjectStore&) override; void render(Painter&, const style::Layer&, const UnwrappedTileID&, const mat4&) override; bool hasData() const override; bool needsClipping() const override; void addGeometry(const GeometryCollection&); void drawCircles(CircleShader&, gl::ObjectStore&); private: CircleVertexBuffer vertexBuffer_; TriangleElementsBuffer elementsBuffer_; std::vector> triangleGroups_; const MapMode mode; }; } // namespace mbgl