fix(core): Fix missing symbols/glyphs (#4554)
This commit is contained in:
@@ -1231,9 +1231,12 @@ size_t SymbolLayout::addSymbol(SymbolBucket::Buffer& buffer,
|
|||||||
float sortKey) {
|
float sortKey) {
|
||||||
constexpr const uint16_t instanceCount = 1;
|
constexpr const uint16_t instanceCount = 1;
|
||||||
|
|
||||||
const uint16_t baseInstance = buffer.segments.empty() ? 0 : buffer.segments.back().instanceCount;
|
if (buffer.segments.empty() ||
|
||||||
if (buffer.segments.empty() || baseInstance + instanceCount > std::numeric_limits<uint16_t>::max() ||
|
buffer.segments.back().instanceCount + instanceCount > std::numeric_limits<uint16_t>::max() ||
|
||||||
std::fabs(buffer.segments.back().sortKey - sortKey) > std::numeric_limits<float>::epsilon()) {
|
std::fabs(buffer.segments.back().sortKey - sortKey) > std::numeric_limits<float>::epsilon()) {
|
||||||
|
const uint16_t baseInstance = buffer.segments.empty()
|
||||||
|
? 0
|
||||||
|
: buffer.segments.back().baseInstance + buffer.segments.back().instanceCount;
|
||||||
buffer.segments.emplace_back(RenderStaticData::symbolSegment(baseInstance, sortKey));
|
buffer.segments.emplace_back(RenderStaticData::symbolSegment(baseInstance, sortKey));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -363,7 +363,7 @@ public:
|
|||||||
|
|
||||||
using PaintPropertyBinder<T, T, PossiblyEvaluatedPropertyValue<T>, A>::setInterleavedBuffer;
|
using PaintPropertyBinder<T, T, PossiblyEvaluatedPropertyValue<T>, A>::setInterleavedBuffer;
|
||||||
void setInterleavedBuffer(InterleavedVertexBuffer& buffer) override {
|
void setInterleavedBuffer(InterleavedVertexBuffer& buffer) override {
|
||||||
this->template setInterleavedBuffer<BaseVertex>(buffer);
|
this->template setInterleavedBuffer<ZoomInterpolatedVertexType<A>>(buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@@ -479,7 +479,7 @@ public:
|
|||||||
|
|
||||||
using PaintPropertyBinder<T, T, PossiblyEvaluatedPropertyValue<T>, A>::setInterleavedBuffer;
|
using PaintPropertyBinder<T, T, PossiblyEvaluatedPropertyValue<T>, A>::setInterleavedBuffer;
|
||||||
void setInterleavedBuffer(InterleavedVertexBuffer& buffer) override {
|
void setInterleavedBuffer(InterleavedVertexBuffer& buffer) override {
|
||||||
this->template setInterleavedBuffer<Vertex>(buffer);
|
this->template setInterleavedBuffer<ZoomInterpolatedVertexType<A>>(buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::tuple<ZoomInterpolatedVertexType<A>> getVertexValue(std::size_t index) const override {
|
std::tuple<ZoomInterpolatedVertexType<A>> getVertexValue(std::size_t index) const override {
|
||||||
@@ -579,7 +579,7 @@ public:
|
|||||||
using PaintPropertyBinder<T, std::array<uint16_t, 4>, PossiblyEvaluatedPropertyValue<Faded<T>>, A1, A2>::
|
using PaintPropertyBinder<T, std::array<uint16_t, 4>, PossiblyEvaluatedPropertyValue<Faded<T>>, A1, A2>::
|
||||||
setInterleavedBuffer;
|
setInterleavedBuffer;
|
||||||
void setInterleavedBuffer(InterleavedVertexBuffer& buffer) override {
|
void setInterleavedBuffer(InterleavedVertexBuffer& buffer) override {
|
||||||
this->template setInterleavedBuffer<Vertex>(buffer);
|
this->template setInterleavedBuffer<ZoomInterpolatedVertexType<A1>>(buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@@ -699,7 +699,7 @@ public:
|
|||||||
interleavedVertexBuffer = std::move(other.interleavedVertexBuffer);
|
interleavedVertexBuffer = std::move(other.interleavedVertexBuffer);
|
||||||
|
|
||||||
(([&] {
|
(([&] {
|
||||||
binders.template get<Ps>()->setInterleavedBuffer(interleavedVertexBuffer);
|
binders.template get<Ps>()->interleavedVertexBuffer = &interleavedVertexBuffer;
|
||||||
}()),
|
}()),
|
||||||
...);
|
...);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user