4.3 KiB
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(gl : WebGL2RenderingContext, 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 correspondingAttribute,Bufferor attribute descriptor object.feedbackBuffers(Object, Optional) - key and value pairs, where key is the name of vertex shader varying and value is the correspondingBufferobject 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 fromfeedbackBuffers.
NOTE: If only reading from
Bufferobjects, above optional props doesn't have to be supplied during construction, but can be supplied usingupdatemethod. If writing toBufferobjects, eithervaryingsorfeedbackBuffersmust be supplied.
Methods (Model props)
getDrawOptions(opts: Object) : Object
Returns resources required when performing Model.draw() options.
opts(Object) - Any existingopts.attributeswill 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 toBufferobjects,opts.varyingwill 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) -Modelobject 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 correspondingAttribute,Bufferor attribute descriptor object.feedbackBuffers(Object, Optional) - key and value pairs, where key is the name of vertex shader varying and value is the correspondingBufferobject 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.