Class: GlBufferSystem

GlBufferSystem

System plugin to the renderer to manage buffers.

WebGL uses Buffers as a way to store objects to the GPU. This system makes working with them a lot easier.

Buffers are used in three main places in WebGL

  • geometry information
  • Uniform information (via uniform buffer objects - a WebGL 2 only feature)
  • Transform feedback information. (WebGL 2 only feature)

This system will handle the binding of buffers to the GPU as well as uploading them. With this system, you never need to work directly with GPU buffers, but instead work with the Buffer class.

new GlBufferSystem (renderer)

Name Type Description
renderer Renderer

The renderer this System works for.

Implements

Methods

bind (buffer) void

This binds specified buffer. On first run, it will create the webGL buffers for the context too

Name Type Description
buffer Buffer

the buffer to bind to the renderer

bindBufferBase (buffer, index) void

Binds an uniform buffer to at the given index.

A cache is used so a buffer will not be bound again if already bound.

Name Type Description
buffer Buffer

the buffer to bind

index number

the base index to bind it to.

bindBufferRange (buffer, index, offset) void

Binds a buffer whilst also binding its range. This will make the buffer start from the offset supplied rather than 0 when it is read.

Name Type Attributes Description
buffer Buffer

the buffer to bind

index number <optional>

the base index to bind at, defaults to 0

offset number <optional>

the offset to bind at (this is blocks of 256). 0 = 0, 1 = 256, 2 = 512 etc

destroyAll () void

dispose all WebGL resources of all managed buffers

updateBuffer (buffer) GlBuffer

Will ensure the data in the buffer is uploaded to the GPU.

Name Type Description
buffer Buffer

the buffer to update

Returns:
Type Description
GlBuffer

contextChange () void protected

Sets up the renderer context and necessary buffers.

createGLBuffer (buffer) GlBuffer protected

creates and attaches a GLBuffer object tied to the current context.

Name Type Description
buffer Buffer
Returns:
Type Description
GlBuffer

onBufferDestroy (buffer, contextLost) void protected

Disposes buffer

Name Type Attributes Default Description
buffer Buffer

buffer with data

contextLost boolean <optional>
false

If context was lost, we suppress deleteVertexArray