#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_opacity::Value{ properties.get() }, uniforms::u_color::Value{ properties.get() }, uniforms::u_radius::Value{ properties.get() }, uniforms::u_blur::Value{ properties.get() }, uniforms::u_stroke_color::Value{ properties.get() }, uniforms::u_stroke_width::Value{ properties.get() }, uniforms::u_stroke_opacity::Value{ properties.get() }, 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 ); } } // namespace mbgl