diff options
author | Konstantin Käfer <mail@kkaefer.com> | 2019-03-07 13:08:30 +0100 |
---|---|---|
committer | Konstantin Käfer <mail@kkaefer.com> | 2019-03-12 11:03:54 +0100 |
commit | cb64c380fbbd209cb68af60e76b7a770805353a8 (patch) | |
tree | 77b790ae49e8f5877be599a0dad2f413a98da43f /src/mbgl/renderer/layers/render_line_layer.cpp | |
parent | 54847ea98698c85da156874dc84088772599ee3b (diff) | |
download | qtlocation-mapboxgl-cb64c380fbbd209cb68af60e76b7a770805353a8.tar.gz |
[core] add texture bindings to draw call invocations
Diffstat (limited to 'src/mbgl/renderer/layers/render_line_layer.cpp')
-rw-r--r-- | src/mbgl/renderer/layers/render_line_layer.cpp | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/src/mbgl/renderer/layers/render_line_layer.cpp b/src/mbgl/renderer/layers/render_line_layer.cpp index b38bc490a6..9eb659f79f 100644 --- a/src/mbgl/renderer/layers/render_line_layer.cpp +++ b/src/mbgl/renderer/layers/render_line_layer.cpp @@ -64,7 +64,9 @@ void RenderLineLayer::render(PaintParameters& parameters, RenderSource*) { } LineBucket& bucket = *bucket_; - auto draw = [&] (auto& program, auto&& uniformValues, const optional<ImagePosition>& patternPositionA, const optional<ImagePosition>& patternPositionB) { + auto draw = [&](auto& program, auto&& uniformValues, + const optional<ImagePosition>& patternPositionA, + const optional<ImagePosition>& patternPositionB, auto&& textureBindings) { auto& programInstance = program.get(evaluated); const auto& paintPropertyBinders = bucket.paintPropertyBinders.at(getID()); @@ -96,6 +98,7 @@ void RenderLineLayer::render(PaintParameters& parameters, RenderSource*) { bucket.segments, allUniformValues, allAttributeBindings, + std::move(textureBindings), getID() ); }; @@ -118,7 +121,10 @@ void RenderLineLayer::render(PaintParameters& parameters, RenderSource*) { posA, posB, crossfade, - parameters.lineAtlas.getSize().width), {}, {}); + parameters.lineAtlas.getSize().width), + {}, + {}, + LineSDFProgram::TextureBindings{}); } else if (!unevaluated.get<LinePattern>().isUndefined()) { const auto linePatternValue = evaluated.get<LinePattern>().constantOr(Faded<std::basic_string<char>>{ "", ""}); @@ -140,7 +146,8 @@ void RenderLineLayer::render(PaintParameters& parameters, RenderSource*) { crossfade, parameters.pixelRatio), *posA, - *posB); + *posB, + LinePatternProgram::TextureBindings{}); } else if (!unevaluated.get<LineGradient>().getValue().isUndefined()) { if (!colorRampTexture) { colorRampTexture = parameters.context.createTexture(colorRamp); @@ -152,14 +159,20 @@ void RenderLineLayer::render(PaintParameters& parameters, RenderSource*) { evaluated, tile, parameters.state, - parameters.pixelsToGLUnits), {}, {}); + parameters.pixelsToGLUnits), + {}, + {}, + LineGradientProgram::TextureBindings{}); } else { draw(parameters.programs.getLineLayerPrograms().line, LineProgram::uniformValues( evaluated, tile, parameters.state, - parameters.pixelsToGLUnits), {}, {}); + parameters.pixelsToGLUnits), + {}, + {}, + LineProgram::TextureBindings{}); } } } |