Every blade below is one instance of a single triangle, drawn in
one draw call. The attribute layout — including per-instance
divisor attributes — is recorded once in a VertexArray, and the
shared rotation/tint parameters stream through a std140 UniformBuffer every
frame.
UniformBuffer.update()
VertexArray · UniformBuffer
Moving the instance-count slider re-uploads the per-instance buffer with
GLBuffer.upload() — the recorded VertexArray keeps pointing at the
same buffer object, so nothing else changes. API reference:
VertexArray
and
UniformBuffer.