2018-06-28 11:37:57 -07:00

69 lines
2.1 KiB
Markdown

# Attribute (Experimental)
Wrapper class to be used with the `Model` class' `render` and `setAttributes` methods.
## Usage
Create model object by passing shaders, uniforms, geometry and render it by passing updated uniforms.
```js
import {_Attribute as Attribute} from 'luma.gl';
```
```js
// construct the model.
const positions = new Attribute({
id: 'vertexPositions',
size: 3,
value: new Float32Array([0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0])
});
// and on each frame update any uniforms (typically matrices) and call render.
model.setAttributes({positions});
model.render();
```
## Methods
### constructor
The constructor for the Attribute class. Use this to create a new Attribute.
`new Attribute(gl, options);`
* `gl` - WebGL context.
* `size` (*number*) - The number of components in each element the buffer (1-4).
* `id` (*string*, optional) - Identifier of the attribute. Cannot be updated.
* `type` (*GLenum*, optional) - Type of the attribute. If not supplied will be inferred from `value`. Cannot be updated.
* `isIndexed` (*bool*, optional) - If the attribute is element index. Default `false`. Cannot be updated.
* `constant` (*bool*, optional) - If the attribute is a constant. Default `false`.
* `isInstanced` (*bool*, optional) - Whether buffer contains instance data. Default `false`.
* `normalized` (*boolean*, optional) - Default `false`
* `integer` (*boolean*, optional) - Default `false`
* `offset` (*number*, optional) - where the data starts in the buffer. Default `0`.
* `stride` (*number*, optional) - an additional offset between each element in the buffer. Default `0`.
* `value` (*TypedArray*) - value of the attribute.
- If `constant` is `true`, the length of `value` should match `size`
- If `constant` is `false`, the length of `value` should be `size` multiplies the number of vertices.
* `buffer` (*Buffer*) - an external buffer for the attribute.
### delete
Free WebGL resources associated with this attribute.
### update
```js
attribute.update({value: newValue});
```
Update attribute options. See `constructor` for possible options.
### getBuffer
Returns a `Buffer` object associated with this attribute, if any.