# [name]

"Interleaved" means that multiple attributes, possibly of different types, (e.g., position, normal, uv, color) are packed into a single array buffer.
An introduction into interleaved arrays can be found here: [link:https://blog.tojicode.com/2011/05/interleaved-array-basics.html Interleaved array basics]

## Examples

[example:webgl_buffergeometry_points_interleaved webgl / buffergeometry / points / interleaved]

## Constructor

### [name]( [param:TypedArray array], [param:Integer stride] )

[page:TypedArray array] -- A typed array with a shared buffer. Stores the geometry data.
[page:Integer stride] -- The number of typed-array elements per vertex.

## Properties

### [property:Array array]

A typed array with a shared buffer. Stores the geometry data.

### [property:Integer stride]

The number of typed-array elements per vertex.

### [property:Integer count]

Gives the total number of elements in the array.

### [property:Object updateRanges]

Array of objects containing:
[page:Integer start]: Position at which to start update.
[page:Integer count]: The number of components to update.
This can be used to only update some components of stored data. Use the [page:InterleavedBuffer.addUpdateRange addUpdateRange] function to add ranges to this array.

### [property:String uuid]

[link:http://en.wikipedia.org/wiki/Universally_unique_identifier UUID] of this instance. This gets automatically assigned, so this shouldn't be edited.

### [property:Integer version]

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

### [property:Boolean needsUpdate]

Default is `false`. Setting this to true increments [page:InterleavedBuffer.version version].

### [property:Usage usage]

Defines the intended usage pattern of the data store for optimization purposes. Corresponds to the `usage` parameter of [link:https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/bufferData WebGLRenderingContext.bufferData]().

## Methods

### [method:this addUpdateRange]( [param:Integer start], [param:Integer count] )

Adds a range of data in the data array to be updated on the GPU. Adds an object describing the range to the [page:InterleavedBuffer.updateRanges updateRanges] array.

### [method:this clearUpdateRanges]()

Clears the [page:InterleavedBuffer.updateRanges updateRanges] array.

### [method:this copy]( [param:InterleavedBuffer source] )

Copies another [name] to this [name].

### [method:this copyAt]( [param:Integer index1], [param:InterleavedBuffer attribute], [param:Integer index2] )

Copies data from `attribute[index2]` to [page:InterleavedBuffer.array array][index1].

### [method:this set]( [param:TypedArray value], [param:Integer offset] )

value - The source (typed) array.
offset - The offset into the target array at which to begin writing values from the source array. Default is `0`.
Stores multiple values in the buffer, reading input values from a specified array.

### [method:InterleavedBuffer clone]( [param:Object data] )

data - This object holds shared array buffers required for properly cloning geometries with interleaved attributes.
Creates a clone of this [name].

### [method:this setUsage] ( [param:Usage value] )

Set [page:InterleavedBuffer.usage usage] to value.

### [method:Object toJSON]( [param:Object data] )

data - This object holds shared array buffers required for properly serializing geometries with interleaved attributes.
Serializes this [name].

## Source

[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]