summaryrefslogtreecommitdiff
path: root/src/mbgl/renderer/layers/render_line_layer.cpp
diff options
context:
space:
mode:
authorKonstantin Käfer <mail@kkaefer.com>2019-03-07 13:08:30 +0100
committerKonstantin Käfer <mail@kkaefer.com>2019-03-12 11:03:54 +0100
commitcb64c380fbbd209cb68af60e76b7a770805353a8 (patch)
tree77b790ae49e8f5877be599a0dad2f413a98da43f /src/mbgl/renderer/layers/render_line_layer.cpp
parent54847ea98698c85da156874dc84088772599ee3b (diff)
downloadqtlocation-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.cpp23
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{});
}
}
}