Whether ParticleBatchCache.dispose has run.
Number of particle systems currently holding GPU buffers (§83, §84).
Returns the vertex array for item, creating it on first use and
re-creating it when the system's capacity or the shared cornerBuffer has
changed.
Returns null — and creates no entry — when the system has no capacity at
all or when GL refuses to allocate an object. Never throws: this runs
inside Renderer.render, where §61 forbids it (see GeometryCache.acquire
for the whole argument).
Deletes every vertex array and buffer this cache created (§83). Idempotent, and valid only on a live context — the renderer calls ParticleBatchCache.forget instead when the context is lost.
Drops every record without touching the context — the context-loss path (§61). The handles are already invalid.
Uploads item's live instances into record's buffer — the frame's only
particle traffic, count × 32 bytes.
The five-argument bufferSubData is what keeps this allocation-free: the
three-argument form would need instances.subarray(0, n), i.e. a fresh
typed-array view per system per frame (plan D7).
A zero-particle system is not uploaded at all: an empty range is a GL call that moves no bytes, and the caller skips the draw anyway.
Per-context store of particle vertex arrays and instance buffers (§61, §64 stage 7).
One cache belongs to one GL context, like
GeometryCacheandTextureCache: the renderer builds it duringinitializeand builds a new one on context restore, since every handle the old one held died with the context.Eviction (decision, WP-9.3 — the policy
gl-geometry.tssets)Records are keyed by the emitting node's id and rebuilt lazily, on the next
acquire, whenever the instance array's capacity or the shared corner buffer has changed. There is no background sweep and no finalization hook, so a particle system removed from the scene and never submitted again keeps its vertex array until the renderer is disposed — the same documented leak windowGeometryCachecarries, for the same reasons (§83 puts resource ownership on whoever created the object; a renderer that is done with a scene disposes).