[core] add texture bindings to draw call invocations
This commit is contained in:
@@ -2,6 +2,8 @@
|
||||
|
||||
#include <mbgl/gfx/types.hpp>
|
||||
#include <mbgl/util/size.hpp>
|
||||
#include <mbgl/util/type_list.hpp>
|
||||
#include <mbgl/util/indexed_tuple.hpp>
|
||||
|
||||
#include <memory>
|
||||
|
||||
@@ -29,5 +31,38 @@ public:
|
||||
std::unique_ptr<const TextureResource> resource;
|
||||
};
|
||||
|
||||
class TextureBinding {
|
||||
public:
|
||||
TextureBinding(const TextureResource& resource_,
|
||||
TextureFilterType filter_ = TextureFilterType::Nearest,
|
||||
TextureMipMapType mipmap_ = TextureMipMapType::No,
|
||||
TextureWrapType wrapX_ = TextureWrapType::Clamp,
|
||||
TextureWrapType wrapY_ = TextureWrapType::Clamp)
|
||||
: resource(&resource_), filter(filter_), mipmap(mipmap_), wrapX(wrapX_), wrapY(wrapY_) {
|
||||
}
|
||||
|
||||
const TextureResource* resource;
|
||||
TextureFilterType filter;
|
||||
TextureMipMapType mipmap;
|
||||
TextureWrapType wrapX;
|
||||
TextureWrapType wrapY;
|
||||
};
|
||||
|
||||
namespace detail {
|
||||
|
||||
template <class>
|
||||
class TextureBindings;
|
||||
|
||||
template <class... Ts>
|
||||
class TextureBindings<TypeList<Ts...>> {
|
||||
public:
|
||||
using Type = IndexedTuple<TypeList<Ts...>, TypeList<ExpandToType<Ts, TextureBinding>...>>;
|
||||
};
|
||||
|
||||
} // namespace detail
|
||||
|
||||
template <class TextureTypeList>
|
||||
using TextureBindings = typename detail::TextureBindings<TextureTypeList>::Type;
|
||||
|
||||
} // namespace gfx
|
||||
} // namespace mbgl
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
namespace mbgl {
|
||||
namespace gl {
|
||||
|
||||
template <class P, class As, class Us>
|
||||
template <class P, class As, class Us, class TBs>
|
||||
class Program {
|
||||
public:
|
||||
using Primitive = P;
|
||||
@@ -29,6 +29,7 @@ public:
|
||||
|
||||
using UniformValues = typename Uniforms::Values;
|
||||
using AttributeBindings = typename Attributes::Bindings;
|
||||
using TextureBindings = TBs;
|
||||
|
||||
Program(Context& context, const std::string& vertexSource, const std::string& fragmentSource)
|
||||
: program(
|
||||
@@ -122,11 +123,14 @@ public:
|
||||
const UniformValues& uniformValues,
|
||||
gl::VertexArray& vertexArray,
|
||||
const AttributeBindings& attributeBindings,
|
||||
const TextureBindings& textureBindings,
|
||||
const gfx::IndexBuffer& indexBuffer,
|
||||
std::size_t indexOffset,
|
||||
std::size_t indexLength) {
|
||||
static_assert(std::is_same<Primitive, typename DrawMode::Primitive>::value, "incompatible draw mode");
|
||||
|
||||
(void)textureBindings;
|
||||
|
||||
context.setDrawMode(drawMode);
|
||||
context.setDepthMode(depthMode);
|
||||
context.setStencilMode(stencilMode);
|
||||
|
||||
@@ -75,6 +75,7 @@ public:
|
||||
const SegmentVector<Attributes>& segments,
|
||||
const Binders& paintPropertyBinders,
|
||||
const typename PaintProperties::PossiblyEvaluated& currentProperties,
|
||||
const TextureBindings& textureBindings,
|
||||
float currentZoom,
|
||||
const std::string& layerID) {
|
||||
typename AllUniforms::Values allUniformValues = uniformValues
|
||||
@@ -103,6 +104,7 @@ public:
|
||||
allUniformValues,
|
||||
vertexArrayIt->second,
|
||||
Attributes::offsetBindings(allAttributeBindings, segment.vertexOffset),
|
||||
textureBindings,
|
||||
indexBuffer,
|
||||
segment.indexOffset,
|
||||
segment.indexLength);
|
||||
@@ -161,6 +163,7 @@ public:
|
||||
const SegmentVector<Attributes>& segments,
|
||||
const Binders& paintPropertyBinders,
|
||||
const typename PaintProperties::PossiblyEvaluated& currentProperties,
|
||||
const TextureBindings& textureBindings,
|
||||
float currentZoom,
|
||||
const std::string& layerID) {
|
||||
typename AllUniforms::Values allUniformValues = uniformValues
|
||||
@@ -187,6 +190,7 @@ public:
|
||||
allUniformValues,
|
||||
vertexArrayIt->second,
|
||||
Attributes::offsetBindings(allAttributeBindings, segment.vertexOffset),
|
||||
textureBindings,
|
||||
indexBuffer,
|
||||
segment.indexOffset,
|
||||
segment.indexLength);
|
||||
|
||||
@@ -35,7 +35,9 @@ public:
|
||||
using PaintUniformList = typename Binders::UniformList;
|
||||
using AllUniforms = gl::Uniforms<TypeListConcat<UniformList, PaintUniformList>>;
|
||||
|
||||
using ProgramType = gl::Program<Primitive, Attributes, AllUniforms>;
|
||||
using TextureBindings = gfx::TextureBindings<TextureList>;
|
||||
|
||||
using ProgramType = gl::Program<Primitive, Attributes, AllUniforms, TextureBindings>;
|
||||
|
||||
ProgramType program;
|
||||
|
||||
@@ -80,6 +82,7 @@ public:
|
||||
const SegmentVector<Attributes>& segments,
|
||||
const typename AllUniforms::Values& allUniformValues,
|
||||
const typename Attributes::Bindings& allAttributeBindings,
|
||||
const TextureBindings& textureBindings,
|
||||
const std::string& layerID) {
|
||||
for (auto& segment : segments) {
|
||||
auto vertexArrayIt = segment.vertexArrays.find(layerID);
|
||||
@@ -98,6 +101,7 @@ public:
|
||||
allUniformValues,
|
||||
vertexArrayIt->second,
|
||||
Attributes::offsetBindings(allAttributeBindings, segment.vertexOffset),
|
||||
textureBindings,
|
||||
indexBuffer,
|
||||
segment.indexOffset,
|
||||
segment.indexLength);
|
||||
|
||||
@@ -263,7 +263,9 @@ public:
|
||||
using PaintUniformList = typename Binders::UniformList;
|
||||
using AllUniforms = gl::Uniforms<TypeListConcat<UniformList, SizeUniformList, PaintUniformList>>;
|
||||
|
||||
using ProgramType = gl::Program<Primitive, Attributes, AllUniforms>;
|
||||
using TextureBindings = gfx::TextureBindings<TextureList>;
|
||||
|
||||
using ProgramType = gl::Program<Primitive, Attributes, AllUniforms, TextureBindings>;
|
||||
|
||||
ProgramType program;
|
||||
|
||||
@@ -315,6 +317,7 @@ public:
|
||||
const SegmentVector<Attributes>& segments,
|
||||
const typename AllUniforms::Values& allUniformValues,
|
||||
const typename Attributes::Bindings& allAttributeBindings,
|
||||
const TextureBindings& textureBindings,
|
||||
const std::string& layerID) {
|
||||
for (auto& segment : segments) {
|
||||
auto vertexArrayIt = segment.vertexArrays.find(layerID);
|
||||
@@ -333,6 +336,7 @@ public:
|
||||
allUniformValues,
|
||||
vertexArrayIt->second,
|
||||
Attributes::offsetBindings(allAttributeBindings, segment.vertexOffset),
|
||||
textureBindings,
|
||||
indexBuffer,
|
||||
segment.indexOffset,
|
||||
segment.indexLength);
|
||||
|
||||
@@ -50,7 +50,7 @@ void RenderBackgroundLayer::render(PaintParameters& parameters, RenderSource*) {
|
||||
const Properties<>::PossiblyEvaluated properties;
|
||||
const BackgroundProgram::Binders paintAttributeData(properties, 0);
|
||||
|
||||
auto draw = [&](auto& program, auto&& uniformValues) {
|
||||
auto draw = [&](auto& program, auto&& uniformValues, auto&& textureBindings) {
|
||||
const auto allUniformValues = program.computeAllUniformValues(
|
||||
std::move(uniformValues),
|
||||
paintAttributeData,
|
||||
@@ -76,6 +76,7 @@ void RenderBackgroundLayer::render(PaintParameters& parameters, RenderSource*) {
|
||||
parameters.staticData.tileTriangleSegments,
|
||||
allUniformValues,
|
||||
allAttributeBindings,
|
||||
std::move(textureBindings),
|
||||
getID()
|
||||
);
|
||||
};
|
||||
@@ -101,7 +102,8 @@ void RenderBackgroundLayer::render(PaintParameters& parameters, RenderSource*) {
|
||||
crossfade,
|
||||
tileID,
|
||||
parameters.state
|
||||
)
|
||||
),
|
||||
BackgroundPatternProgram::TextureBindings{}
|
||||
);
|
||||
}
|
||||
} else {
|
||||
@@ -112,7 +114,8 @@ void RenderBackgroundLayer::render(PaintParameters& parameters, RenderSource*) {
|
||||
uniforms::u_matrix::Value( parameters.matrixForTile(tileID) ),
|
||||
uniforms::u_color::Value( evaluated.get<BackgroundColor>() ),
|
||||
uniforms::u_opacity::Value( evaluated.get<BackgroundOpacity>() ),
|
||||
}
|
||||
},
|
||||
BackgroundProgram::TextureBindings{}
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -107,6 +107,7 @@ void RenderCircleLayer::render(PaintParameters& parameters, RenderSource*) {
|
||||
bucket.segments,
|
||||
allUniformValues,
|
||||
allAttributeBindings,
|
||||
CircleProgram::TextureBindings{},
|
||||
getID()
|
||||
);
|
||||
}
|
||||
|
||||
@@ -72,7 +72,8 @@ void RenderFillExtrusionLayer::render(PaintParameters& parameters, RenderSource*
|
||||
parameters.context.clear(Color{ 0.0f, 0.0f, 0.0f, 0.0f }, depthClearValue, {});
|
||||
|
||||
auto draw = [&](auto& programInstance, const auto& tileBucket, auto&& uniformValues,
|
||||
const optional<ImagePosition>& patternPositionA, const optional<ImagePosition>& patternPositionB) {
|
||||
const optional<ImagePosition>& patternPositionA,
|
||||
const optional<ImagePosition>& patternPositionB, auto&& textureBindings) {
|
||||
const auto& paintPropertyBinders = tileBucket.paintPropertyBinders.at(getID());
|
||||
paintPropertyBinders.setPatternParameters(patternPositionA, patternPositionB, crossfade);
|
||||
|
||||
@@ -101,6 +102,7 @@ void RenderFillExtrusionLayer::render(PaintParameters& parameters, RenderSource*
|
||||
tileBucket.triangleSegments,
|
||||
allUniformValues,
|
||||
allAttributeBindings,
|
||||
std::move(textureBindings),
|
||||
getID());
|
||||
};
|
||||
|
||||
@@ -122,7 +124,9 @@ void RenderFillExtrusionLayer::render(PaintParameters& parameters, RenderSource*
|
||||
parameters.state,
|
||||
parameters.evaluatedLight
|
||||
),
|
||||
{}, {}
|
||||
{},
|
||||
{},
|
||||
FillExtrusionProgram::TextureBindings{}
|
||||
);
|
||||
}
|
||||
} else {
|
||||
@@ -155,7 +159,8 @@ void RenderFillExtrusionLayer::render(PaintParameters& parameters, RenderSource*
|
||||
parameters.evaluatedLight
|
||||
),
|
||||
patternPosA,
|
||||
patternPosB
|
||||
patternPosB,
|
||||
FillExtrusionPatternProgram::TextureBindings{}
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -202,6 +207,7 @@ void RenderFillExtrusionLayer::render(PaintParameters& parameters, RenderSource*
|
||||
parameters.staticData.extrusionTextureSegments,
|
||||
allUniformValues,
|
||||
allAttributeBindings,
|
||||
ExtrusionTextureProgram::TextureBindings{},
|
||||
getID());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -73,7 +73,8 @@ void RenderFillLayer::render(PaintParameters& parameters, RenderSource*) {
|
||||
const auto& drawMode,
|
||||
const auto& depthMode,
|
||||
const auto& indexBuffer,
|
||||
const auto& segments) {
|
||||
const auto& segments,
|
||||
auto&& textureBindings) {
|
||||
auto& programInstance = program.get(evaluated);
|
||||
|
||||
const auto& paintPropertyBinders = bucket.paintPropertyBinders.at(getID());
|
||||
@@ -110,6 +111,7 @@ void RenderFillLayer::render(PaintParameters& parameters, RenderSource*) {
|
||||
segments,
|
||||
allUniformValues,
|
||||
allAttributeBindings,
|
||||
std::move(textureBindings),
|
||||
getID()
|
||||
);
|
||||
};
|
||||
@@ -124,7 +126,8 @@ void RenderFillLayer::render(PaintParameters& parameters, RenderSource*) {
|
||||
? gfx::DepthMaskType::ReadWrite
|
||||
: gfx::DepthMaskType::ReadOnly),
|
||||
*bucket.triangleIndexBuffer,
|
||||
bucket.triangleSegments);
|
||||
bucket.triangleSegments,
|
||||
FillProgram::TextureBindings{});
|
||||
}
|
||||
|
||||
if (evaluated.get<FillAntialias>() && parameters.pass == RenderPass::Translucent) {
|
||||
@@ -134,7 +137,8 @@ void RenderFillLayer::render(PaintParameters& parameters, RenderSource*) {
|
||||
unevaluated.get<FillOutlineColor>().isUndefined() ? 2 : 0,
|
||||
gfx::DepthMaskType::ReadOnly),
|
||||
*bucket.lineIndexBuffer,
|
||||
bucket.lineSegments);
|
||||
bucket.lineSegments,
|
||||
FillOutlineProgram::TextureBindings{});
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@@ -159,7 +163,8 @@ void RenderFillLayer::render(PaintParameters& parameters, RenderSource*) {
|
||||
const auto& drawMode,
|
||||
const auto& depthMode,
|
||||
const auto& indexBuffer,
|
||||
const auto& segments) {
|
||||
const auto& segments,
|
||||
auto&& textureBindings) {
|
||||
auto& programInstance = program.get(evaluated);
|
||||
|
||||
const auto& paintPropertyBinders = bucket.paintPropertyBinders.at(getID());
|
||||
@@ -200,6 +205,7 @@ void RenderFillLayer::render(PaintParameters& parameters, RenderSource*) {
|
||||
segments,
|
||||
allUniformValues,
|
||||
allAttributeBindings,
|
||||
std::move(textureBindings),
|
||||
getID()
|
||||
);
|
||||
};
|
||||
@@ -208,14 +214,16 @@ void RenderFillLayer::render(PaintParameters& parameters, RenderSource*) {
|
||||
gfx::Triangles(),
|
||||
parameters.depthModeForSublayer(1, gfx::DepthMaskType::ReadWrite),
|
||||
*bucket.triangleIndexBuffer,
|
||||
bucket.triangleSegments);
|
||||
bucket.triangleSegments,
|
||||
FillProgram::TextureBindings{});
|
||||
|
||||
if (evaluated.get<FillAntialias>() && unevaluated.get<FillOutlineColor>().isUndefined()) {
|
||||
draw(parameters.programs.getFillLayerPrograms().fillOutlinePattern,
|
||||
gfx::Lines { 2.0f },
|
||||
parameters.depthModeForSublayer(2, gfx::DepthMaskType::ReadOnly),
|
||||
*bucket.lineIndexBuffer,
|
||||
bucket.lineSegments);
|
||||
bucket.lineSegments,
|
||||
FillOutlineProgram::TextureBindings{});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -128,6 +128,7 @@ void RenderHeatmapLayer::render(PaintParameters& parameters, RenderSource*) {
|
||||
bucket.segments,
|
||||
allUniformValues,
|
||||
allAttributeBindings,
|
||||
HeatmapProgram::TextureBindings{},
|
||||
getID()
|
||||
);
|
||||
}
|
||||
@@ -176,6 +177,7 @@ void RenderHeatmapLayer::render(PaintParameters& parameters, RenderSource*) {
|
||||
parameters.staticData.extrusionTextureSegments,
|
||||
allUniformValues,
|
||||
allAttributeBindings,
|
||||
HeatmapProgram::TextureBindings{},
|
||||
getID()
|
||||
);
|
||||
}
|
||||
|
||||
@@ -105,6 +105,7 @@ void RenderHillshadeLayer::render(PaintParameters& parameters, RenderSource* src
|
||||
segments,
|
||||
allUniformValues,
|
||||
allAttributeBindings,
|
||||
HillshadeProgram::TextureBindings{},
|
||||
getID()
|
||||
);
|
||||
};
|
||||
@@ -167,6 +168,7 @@ void RenderHillshadeLayer::render(PaintParameters& parameters, RenderSource* src
|
||||
parameters.staticData.rasterSegments,
|
||||
allUniformValues,
|
||||
allAttributeBindings,
|
||||
HillshadePrepareProgram::TextureBindings{},
|
||||
getID()
|
||||
);
|
||||
bucket.texture = std::move(view.getTexture());
|
||||
|
||||
@@ -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{});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -119,6 +119,7 @@ void RenderRasterLayer::render(PaintParameters& parameters, RenderSource* source
|
||||
segments,
|
||||
allUniformValues,
|
||||
allAttributeBindings,
|
||||
RasterProgram::TextureBindings{},
|
||||
getID()
|
||||
);
|
||||
};
|
||||
|
||||
@@ -93,7 +93,8 @@ void RenderSymbolLayer::render(PaintParameters& parameters, RenderSource*) {
|
||||
const auto& symbolSizeBinder,
|
||||
const SymbolPropertyValues& values_,
|
||||
const auto& binders,
|
||||
const auto& paintProperties)
|
||||
const auto& paintProperties,
|
||||
auto&& textureBindings)
|
||||
{
|
||||
auto& programInstance = program.get(paintProperties);
|
||||
|
||||
@@ -127,6 +128,7 @@ void RenderSymbolLayer::render(PaintParameters& parameters, RenderSource*) {
|
||||
buffers.segments,
|
||||
allUniformValues,
|
||||
allAttributeBindings,
|
||||
std::move(textureBindings),
|
||||
getID()
|
||||
);
|
||||
};
|
||||
@@ -170,7 +172,8 @@ void RenderSymbolLayer::render(PaintParameters& parameters, RenderSource*) {
|
||||
bucket.iconSizeBinder,
|
||||
values,
|
||||
bucketPaintProperties.iconBinders,
|
||||
paintPropertyValues);
|
||||
paintPropertyValues,
|
||||
SymbolSDFIconProgram::TextureBindings{});
|
||||
}
|
||||
|
||||
if (values.hasFill) {
|
||||
@@ -180,7 +183,8 @@ void RenderSymbolLayer::render(PaintParameters& parameters, RenderSource*) {
|
||||
bucket.iconSizeBinder,
|
||||
values,
|
||||
bucketPaintProperties.iconBinders,
|
||||
paintPropertyValues);
|
||||
paintPropertyValues,
|
||||
SymbolSDFIconProgram::TextureBindings{});
|
||||
}
|
||||
} else {
|
||||
draw(parameters.programs.getSymbolLayerPrograms().symbolIcon,
|
||||
@@ -189,7 +193,8 @@ void RenderSymbolLayer::render(PaintParameters& parameters, RenderSource*) {
|
||||
bucket.iconSizeBinder,
|
||||
values,
|
||||
bucketPaintProperties.iconBinders,
|
||||
paintPropertyValues);
|
||||
paintPropertyValues,
|
||||
SymbolIconProgram::TextureBindings{});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -223,7 +228,8 @@ void RenderSymbolLayer::render(PaintParameters& parameters, RenderSource*) {
|
||||
bucket.textSizeBinder,
|
||||
values,
|
||||
bucketPaintProperties.textBinders,
|
||||
paintPropertyValues);
|
||||
paintPropertyValues,
|
||||
SymbolSDFTextProgram::TextureBindings{});
|
||||
}
|
||||
|
||||
if (values.hasFill) {
|
||||
@@ -233,7 +239,8 @@ void RenderSymbolLayer::render(PaintParameters& parameters, RenderSource*) {
|
||||
bucket.textSizeBinder,
|
||||
values,
|
||||
bucketPaintProperties.textBinders,
|
||||
paintPropertyValues);
|
||||
paintPropertyValues,
|
||||
SymbolSDFTextProgram::TextureBindings{});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -267,6 +274,7 @@ void RenderSymbolLayer::render(PaintParameters& parameters, RenderSource*) {
|
||||
bucket.collisionBox.segments,
|
||||
paintAttributeData,
|
||||
properties,
|
||||
CollisionBoxProgram::TextureBindings{},
|
||||
parameters.state.getZoom(),
|
||||
getID()
|
||||
);
|
||||
@@ -303,6 +311,7 @@ void RenderSymbolLayer::render(PaintParameters& parameters, RenderSource*) {
|
||||
bucket.collisionCircle.segments,
|
||||
paintAttributeData,
|
||||
properties,
|
||||
CollisionCircleProgram::TextureBindings{},
|
||||
parameters.state.getZoom(),
|
||||
getID()
|
||||
);
|
||||
|
||||
@@ -112,6 +112,7 @@ void RenderTile::finishRender(PaintParameters& parameters) {
|
||||
parameters.state.getZoom()
|
||||
),
|
||||
allAttributeBindings,
|
||||
DebugProgram::TextureBindings{},
|
||||
"debug"
|
||||
);
|
||||
|
||||
@@ -134,6 +135,7 @@ void RenderTile::finishRender(PaintParameters& parameters) {
|
||||
parameters.state.getZoom()
|
||||
),
|
||||
allAttributeBindings,
|
||||
DebugProgram::TextureBindings{},
|
||||
"debug"
|
||||
);
|
||||
}
|
||||
@@ -162,6 +164,7 @@ void RenderTile::finishRender(PaintParameters& parameters) {
|
||||
paintAttributeData,
|
||||
properties
|
||||
),
|
||||
DebugProgram::TextureBindings{},
|
||||
"debug"
|
||||
);
|
||||
}
|
||||
|
||||
@@ -469,6 +469,7 @@ void Renderer::Impl::render(const UpdateParameters& updateParameters) {
|
||||
paintAttributeData,
|
||||
properties
|
||||
),
|
||||
ClippingMaskProgram::TextureBindings{},
|
||||
"clipping"
|
||||
);
|
||||
}
|
||||
|
||||
@@ -84,6 +84,7 @@ void RenderImageSource::finishRender(PaintParameters& parameters) {
|
||||
paintAttributeData,
|
||||
properties
|
||||
),
|
||||
DebugProgram::TextureBindings{},
|
||||
"image"
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user