diff options
Diffstat (limited to 'src/mbgl/renderer/circle_bucket.cpp')
-rw-r--r-- | src/mbgl/renderer/circle_bucket.cpp | 27 |
1 files changed, 22 insertions, 5 deletions
diff --git a/src/mbgl/renderer/circle_bucket.cpp b/src/mbgl/renderer/circle_bucket.cpp index d3ce8405d0..6722d04497 100644 --- a/src/mbgl/renderer/circle_bucket.cpp +++ b/src/mbgl/renderer/circle_bucket.cpp @@ -1,21 +1,33 @@ #include <mbgl/renderer/circle_bucket.hpp> #include <mbgl/renderer/painter.hpp> -#include <mbgl/gl/context.hpp> - #include <mbgl/programs/circle_program.hpp> +#include <mbgl/style/bucket_parameters.hpp> #include <mbgl/style/layers/circle_layer.hpp> +#include <mbgl/style/layers/circle_layer_impl.hpp> #include <mbgl/util/constants.hpp> namespace mbgl { using namespace style; -CircleBucket::CircleBucket(MapMode mode_) : mode(mode_) { +CircleBucket::CircleBucket(const BucketParameters& parameters, const std::vector<const Layer*>& layers) + : mode(parameters.mode) { + for (const auto& layer : layers) { + paintPropertyBinders.emplace(layer->getID(), + CircleProgram::PaintPropertyBinders( + layer->as<CircleLayer>()->impl->paint.evaluated, + parameters.tileID.overscaledZ)); + } } void CircleBucket::upload(gl::Context& context) { vertexBuffer = context.createVertexBuffer(std::move(vertices)); indexBuffer = context.createIndexBuffer(std::move(triangles)); + + for (auto& pair : paintPropertyBinders) { + pair.second.upload(context); + } + uploaded = true; } @@ -30,10 +42,11 @@ bool CircleBucket::hasData() const { return !segments.empty(); } -void CircleBucket::addGeometry(const GeometryCollection& geometryCollection) { +void CircleBucket::addFeature(const GeometryTileFeature& feature, + const GeometryCollection& geometry) { constexpr const uint16_t vertexLength = 4; - for (auto& circle : geometryCollection) { + for (auto& circle : geometry) { for(auto& point : circle) { auto x = point.x; auto y = point.y; @@ -76,6 +89,10 @@ void CircleBucket::addGeometry(const GeometryCollection& geometryCollection) { segment.indexLength += 6; } } + + for (auto& pair : paintPropertyBinders) { + pair.second.populateVertexVectors(feature, vertices.vertexSize()); + } } } // namespace mbgl |