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) {
|
||||
constexpr const uint16_t instanceCount = 1;
|
||||
|
||||
const uint16_t baseInstance = buffer.segments.empty() ? 0 : buffer.segments.back().instanceCount;
|
||||
if (buffer.segments.empty() || baseInstance + instanceCount > std::numeric_limits<uint16_t>::max() ||
|
||||
if (buffer.segments.empty() ||
|
||||
buffer.segments.back().instanceCount + instanceCount > std::numeric_limits<uint16_t>::max() ||
|
||||
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));
|
||||
}
|
||||
|
||||
|
||||
@@ -363,7 +363,7 @@ public:
|
||||
|
||||
using PaintPropertyBinder<T, T, PossiblyEvaluatedPropertyValue<T>, A>::setInterleavedBuffer;
|
||||
void setInterleavedBuffer(InterleavedVertexBuffer& buffer) override {
|
||||
this->template setInterleavedBuffer<BaseVertex>(buffer);
|
||||
this->template setInterleavedBuffer<ZoomInterpolatedVertexType<A>>(buffer);
|
||||
}
|
||||
|
||||
private:
|
||||
@@ -479,7 +479,7 @@ public:
|
||||
|
||||
using PaintPropertyBinder<T, T, PossiblyEvaluatedPropertyValue<T>, A>::setInterleavedBuffer;
|
||||
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 {
|
||||
@@ -579,7 +579,7 @@ public:
|
||||
using PaintPropertyBinder<T, std::array<uint16_t, 4>, PossiblyEvaluatedPropertyValue<Faded<T>>, A1, A2>::
|
||||
setInterleavedBuffer;
|
||||
void setInterleavedBuffer(InterleavedVertexBuffer& buffer) override {
|
||||
this->template setInterleavedBuffer<Vertex>(buffer);
|
||||
this->template setInterleavedBuffer<ZoomInterpolatedVertexType<A1>>(buffer);
|
||||
}
|
||||
|
||||
private:
|
||||
@@ -699,7 +699,7 @@ public:
|
||||
interleavedVertexBuffer = std::move(other.interleavedVertexBuffer);
|
||||
|
||||
(([&] {
|
||||
binders.template get<Ps>()->setInterleavedBuffer(interleavedVertexBuffer);
|
||||
binders.template get<Ps>()->interleavedVertexBuffer = &interleavedVertexBuffer;
|
||||
}()),
|
||||
...);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user