GLBufferAttribute - Verge3D User Manual - Soft8Soft
Description: Learn how to use GLBufferAttribute in your interactive 3D apps made with Verge3D

# GLBufferAttribute

This buffer attribute class does not construct a VBO. Instead, it uses whatever VBO is passed in constructor and can later be altered via the `buffer` property.

It is required to pass additional params alongside the VBO. Those are: the GL context, the GL data type, the number of components per vertex, the number of bytes per component, and the number of vertices.

The most common use case for this class is when some kind of GPGPU calculation interferes or even produces the VBOs in question.

## Constructor

### GLBufferAttribute(buffer : WebGLBuffer, type : GLenum, itemSize : Integer, elementSize : Integer, count : Integer)

`buffer`
  Must be a WebGLBuffer.
`type`
  One of WebGL Data Types.
`itemSize`
  The number of values of the array that should be associated with a particular vertex. For instance, if this attribute is storing a 3-component vector (such as a position, normal, or color), then `itemSize` should be `3`.
`elementSize`
  1, 2 or 4. The corresponding size (in bytes) for the given `type` param.
  - gl.FLOAT: 4
  - gl.UNSIGNED_SHORT: 2
  - gl.SHORT: 2
  - gl.UNSIGNED_INT: 4
  - gl.INT: 4
  - gl.BYTE: 1
  - gl.UNSIGNED_BYTE: 1
`count`
  The expected number of vertices in VBO.

## Properties

### # .buffer : WebGLBuffer

The current WebGLBuffer instance.

### # .count : Integer

The expected number of vertices in VBO.

### # .itemSize : Integer

How many values make up each item (vertex).

### # .elementSize : Integer

Stores the corresponding size in bytes for the current `type` property value.

See above (constructor) for a list of known type sizes.

### # .type : GLenum

A WebGL Data Type describing the underlying VBO contents.

Set this property together with `elementSize`. The recommended way is using the `setType` method.

### # .isGLBufferAttribute : Boolean

Read-only. Always `true`.

## Methods

### # .setBuffer(buffer) → this

Sets the `buffer` property.

### # .setType(type, elementSize) → this

Sets the both `type` and `elementSize` properties.

### # .setItemSize(itemSize) → this

Sets the `itemSize` property.

### # .setCount(count) → this

Sets the `count` property.

### # .version : Integer

A version number, incremented every time the .needsUpdate property is set to true.

### # .needsUpdate : Boolean

Default is `false`. Setting this to `true` increments version.

## Source

For more info on how to obtain the source code of this module see this page.