Add checks for zero indexes on fill patterns to match fills. (#1638)
Co-authored-by: Bart Louwers <bart@emeel.net> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
This commit is contained in:
@@ -167,7 +167,10 @@ void DrawableBuilder::setSegments(const gfx::DrawMode mode,
|
||||
gfx::IndexVectorBasePtr indexes,
|
||||
const SegmentBase* segments,
|
||||
const std::size_t segmentCount) {
|
||||
assert(indexes && indexes->elements());
|
||||
if (!indexes || !indexes->elements()) {
|
||||
assert("Missing segment indexes");
|
||||
return;
|
||||
}
|
||||
impl->sharedIndexes = std::move(indexes);
|
||||
for (std::size_t i = 0; i < segmentCount; ++i) {
|
||||
const auto& seg = segments[i];
|
||||
|
||||
@@ -210,10 +210,12 @@ void DrawableGL::upload(gfx::UploadPass& uploadPass) {
|
||||
|
||||
if (!glSeg.getVertexArray().isValid()) {
|
||||
auto vertexArray = glContext.createVertexArray();
|
||||
IndexBufferGL& indexBuffer = *static_cast<IndexBufferGL*>(impl->indexes->getBuffer());
|
||||
const auto& indexBuffer = static_cast<IndexBufferGL&>(*impl->indexes->getBuffer());
|
||||
vertexArray.bind(glContext, *indexBuffer.buffer, bindings);
|
||||
assert(vertexArray.isValid());
|
||||
glSeg.setVertexArray(std::move(vertexArray));
|
||||
if (vertexArray.isValid()) {
|
||||
glSeg.setVertexArray(std::move(vertexArray));
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@@ -706,7 +706,7 @@ void RenderFillLayer::update(gfx::ShaderRegistry& shaders,
|
||||
}
|
||||
};
|
||||
|
||||
if (patternBuilder) {
|
||||
if (patternBuilder && bucket.sharedTriangles->elements()) {
|
||||
patternBuilder->setShader(fillShader);
|
||||
patternBuilder->setRenderPass(renderPass);
|
||||
if (outlinePatternBuilder) {
|
||||
@@ -726,7 +726,7 @@ void RenderFillLayer::update(gfx::ShaderRegistry& shaders,
|
||||
"FillPatternTilePropsUBO",
|
||||
getFillPatternTilePropsUBO());
|
||||
}
|
||||
if (outlinePatternBuilder) {
|
||||
if (outlinePatternBuilder && bucket.sharedLines->elements()) {
|
||||
outlinePatternBuilder->setShader(outlineShader);
|
||||
outlinePatternBuilder->setRenderPass(renderPass);
|
||||
outlinePatternBuilder->setVertexAttributes(std::move(vertexAttrs));
|
||||
|
||||
@@ -233,10 +233,15 @@ constexpr auto Image0UniformName = "u_image0";
|
||||
constexpr auto Image1UniformName = "u_image1";
|
||||
|
||||
void RenderRasterLayer::updateLayerTweaker() {
|
||||
if (layerGroup) {
|
||||
if (layerGroup || imageLayerGroup) {
|
||||
tweaker = std::make_shared<RasterLayerTweaker>(getID(), evaluatedProperties);
|
||||
tweaker->enableOverdrawInspector(overdrawInspector);
|
||||
layerGroup->setLayerTweaker(tweaker);
|
||||
if (layerGroup) {
|
||||
layerGroup->setLayerTweaker(tweaker);
|
||||
}
|
||||
if (imageLayerGroup) {
|
||||
imageLayerGroup->setLayerTweaker(tweaker);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user