#include #include #include #include #include #include #include #include #include namespace mbgl { using namespace style; void Painter::renderCircle(PaintParameters& parameters, CircleBucket& bucket, const CircleLayer& layer, const RenderTile& tile) { if (pass == RenderPass::Opaque) { return; } const CirclePaintProperties::Evaluated& properties = layer.impl->paint.evaluated; const bool scaleWithMap = properties.get() == CirclePitchScaleType::Map; parameters.programs.circle.draw( context, gl::Triangles(), depthModeForSublayer(0, gl::DepthMode::ReadOnly), frame.mapMode == MapMode::Still ? stencilModeForClipping(tile.clip) : gl::StencilMode::disabled(), colorModeForRenderPass(), CircleProgram::UniformValues { uniforms::u_matrix::Value{ tile.translatedMatrix(properties.get(), properties.get(), state) }, uniforms::u_scale_with_map::Value{ scaleWithMap }, uniforms::u_extrude_scale::Value{ scaleWithMap ? std::array {{ pixelsToGLUnits[0] * state.getCameraToCenterDistance(), pixelsToGLUnits[1] * state.getCameraToCenterDistance() }} : pixelsToGLUnits } }, *bucket.vertexBuffer, *bucket.indexBuffer, bucket.segments, bucket.paintPropertyBinders.at(layer.getID()), properties, state.getZoom() ); } } // namespace mbgl