The Bucket interface is the single point of knowledge about turning vector
tiles into WebGL buffers.
Bucket is an abstract interface. An implementation exists for each style layer type.
Create a bucket via the StyleLayer#createBucket method.
The concrete bucket types, using layout options from the style layer,
transform feature geometries into vertex and index data for use by the
vertex shader. They also (via ProgramConfiguration) use feature
properties and the zoom level to populate the attributes needed for
data-driven styling.
Buckets are designed to be built on a worker thread and then serialized and
transferred back to the main thread for rendering. On the worker side, a
bucket's vertex, index, and attribute data is stored in bucket.arrays: ArrayGroup.
When a bucket's data is serialized and sent back to the main thread,
is gets deserialized (using new Bucket(serializedBucketData), with
the array data now stored in bucket.buffers: BufferGroup. BufferGroups
hold the same data as ArrayGroups, but are tuned for consumption by WebGL.
Release the WebGL resources associated with the buffers. Note that because
buckets are shared between layers having the same layout properties, they
must be destroyed in groups (all buckets for a tile, or all symbol buckets).
The
Bucket
interface is the single point of knowledge about turning vector tiles into WebGL buffers.Bucket
is an abstract interface. An implementation exists for each style layer type. Create a bucket via theStyleLayer#createBucket
method.The concrete bucket types, using layout options from the style layer, transform feature geometries into vertex and index data for use by the vertex shader. They also (via
ProgramConfiguration
) use feature properties and the zoom level to populate the attributes needed for data-driven styling.Buckets are designed to be built on a worker thread and then serialized and transferred back to the main thread for rendering. On the worker side, a bucket's vertex, index, and attribute data is stored in
bucket.arrays: ArrayGroup
. When a bucket's data is serialized and sent back to the main thread, is gets deserialized (usingnew Bucket(serializedBucketData)
, with the array data now stored inbucket.buffers: BufferGroup
. BufferGroups hold the same data as ArrayGroups, but are tuned for consumption by WebGL.