Skip to main content

BufferTransform

BufferTransform is an internal helper class for Transform, responsible for managing resources and state required for reading from and/or writing to Buffer objects. It auto creates feedbackBufferes when requested, creates TransformFeedback objects. Maintains all buffer bindings, when swapping is eanbled, two binding objects are created for easy switching of all WebGL resource binginds.

NOTE: In following sections 'buffer transform' is used to refer to 'reading from and/or writing to Buffer objects'.

Constructor

Transform(device: Device, props: Object)

  • gl (WebGLRenderingContext) gl - context

  • props (Object, Optional) - contains following data.

    • sourceBuffers (Object, Optional) - key and value pairs, where key is the name of vertex shader attribute and value is the corresponding Attribute, Buffer or attribute descriptor object.
    • feedbackBuffers (Object, Optional) - key and value pairs, where key is the name of vertex shader varying and value is the corresponding Buffer object or buffer params object. If a buffer params object is specified, it will contain following fields, these can be used to capture data into the buffer at particular offset and size.
      • buffer=(Buffer) - Buffer object to be bound.
      • byteOffset=(Number, default: 0) - Byte offset that is used to start recording the data in the buffer.
      • byteSize=(Number, default: remaining buffer size) - Size in bytes that is used for recording the data.
    • varyings (Array, Optional) - Array of vertex shader varyings names. When not provided this can be deduced from feedbackBuffers.

    NOTE: If only reading from Buffer objects, above optional props doesn't have to be supplied during construction, but can be supplied using update method. If writing to Buffer objects, either varyings or feedbackBuffers must be supplied.

Methods (Model props)

getDrawOptions(opts: Object) : Object

Returns resources required when performing Model.draw() options.

  • opts (Object) - Any existing opts.attributes will be merged with new attributes.

Returns an Object : attributes, transformFeedback.

updateModelProps(props: Object) : Object

Updates input props object with data required for buffer transform.

  • opts (Object) - If writing to Buffer objects, opts.varying will be updated.

Returns updated object.

Methods (Resource management)

setupResources(opts: Object)

Sets up internal resources needed writing to buffers.

  • opts (Object) - contains following data.
    • model (Model, Optional) - Model object that is used to perform draw operations.

swap()

If feedbackMap is provided during construction, performs source and feedback buffers swap as per the feedbackMap.

update(props: Object)

Updates buffer bindings for one or more source or feedback buffers.

  • props (Object) - contains following data.
    • sourceBuffers (Object, Optional) - key and value pairs, where key is the name of vertex shader attribute and value is the corresponding Attribute, Buffer or attribute descriptor object.
    • feedbackBuffers (Object, Optional) - key and value pairs, where key is the name of vertex shader varying and value is the corresponding Buffer object or buffer params object. If a buffer params object is specified, it will contain following fields, these can be used to capture data into the buffer at particular offset and size.
      • buffer=(Buffer) - Buffer object to be bound.
      • byteOffset=(Number, default: 0) - Byte offset that is used to start recording the data in the buffer.
      • byteSize=(Number, default: remaining buffer size) - Size in bytes that is used for recording the data.

Methods (Accessors)

getBuffer(varyingName : String) : Buffer

Returns current feedback buffer corresponding to given varying name.

  • varyingName (String) - varying name.

getData([options : Object]) : ArrayBufferView

Reads and returns data from current feedback buffer corresponding to the given varying name.

  • options.varyingName (String, Optional) - when specified, first checks if there is a corresponding feedback buffer, if so reads data from this buffer and returns. When not specified, there must be target texture and data is read from this texture and returned.