# [name]

Questa classe memorizza i dati per un attributo (come le posizioni dei vertici, gli indici delle facce, le normali, i colori, le coordinate UV e alcuni attributi personalizzati) associato ad una [page:BufferGeometry], che consente un passaggio più efficiente dei dati alla GPU. Consulta questa pagina per i dettagli ed un esempo di utilizzo. Quando si lavora con dati di tipo vettoriale, i metodi helper .fromBufferAttribute( attribute, index ) sulle classi [page:Vector2.fromBufferAttribute Vector2], [page:Vector3.fromBufferAttribute Vector3], [page:Vector4.fromBufferAttribute Vector4] e [page:Color.fromBufferAttribute Color] possono essere utili.

## Costruttore

### [name]( [param:TypedArray array], [param:Integer itemSize], [param:Boolean normalized] )

[page:TypedArray array] -- Deve essere un [link:https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/TypedArray TypedArray]. Utilizzato per istanziare il buffer.
Questo array dovrebbe avere gli elementi `itemSize * numVertices` dove numVertices è il numero di vertici della [page:BufferGeometry BufferGeometry] associata.
[page:Integer itemSize] -- il numero di valori dell'array che deve essere associato ad un particolare vertice. Per esempio, se questo atttibuto memorizza un vettore a 3 componenti (come posizione, normale o colore), itemSize dovrebbe essere 3.
[page:Boolean normalized] -- (opzionale) Si applica solo ai dati interi. Indica il modo in cui i dati sottostanti del buffer si adattano ai valori del codice GLSL. Ad esempio, se l'[page:TypedArray array] è un'istanza di UInt16Array, e [page:Boolean normalized] è a true, i valori `0 - +65535` nei dati dell'array saranno mappati su 0.0f - +1.0f nell'attributo GLSL. Un Int16Array (con segno) sarà mappato da -32768 - +32767 a -1.0f - +1.0f. Se [page:Boolean normalized] è a false, i valori verranno convertiti in float non modificati, p.e. 32767 diventa 32767.0f.

## Proprietà

### [property:TypedArray array]

L'[page:TypedArray array] contente i dati memorizzati nel buffer.

### [property:Integer count]

Memorizza la lunghezza dell'[page:BufferAttribute.array array] divisa per [page:BufferAttribute.itemSize itemSize]. Read-only property.
Se il buffer memorizza un vettore a 3 componenti (come una posizione, una normale o un colore), questo conterà il numero dei vettori memorizzati.

### [property:Number gpuType]

Configures the bound GPU type for use in shaders. Either [page:BufferAttribute THREE.FloatType] or [page:BufferAttribute THREE.IntType], default is [page:BufferAttribute THREE.FloatType]. Note: this only has an effect for integer arrays and is not configurable for float arrays. For lower precision float types, see [page:BufferAttributeTypes THREE.Float16BufferAttribute].

### [property:Boolean isBufferAttribute]

Flag di sola lettura per verificare se un dato oggetto è di tipo [name].

### [property:Integer itemSize]

La lunghezza dei vettori che vengono memorizzati nell'[page:BufferAttribute.array array].

### [property:String name]

Un nome opzionale per questa istanza dell'attributo. Il valore predefinito è una stringa vuota.

### [property:Boolean needsUpdate]

Flag che indica che questo attributo è stato modificato e deve essere rinviato alla GPU. Impostalo a true quando modifichi il valore dell'array.
Impostando questa proprietà a true incrementa, inoltre, la [page:BufferAttribute.version versione].

### [property:Boolean normalized]

Indica il modo in cui i dati sottostanti del buffer si adattano ai valori del codice shader GLSL. Vedi il costruttore sopra per i dettagli.

### [property:Function onUploadCallback]

Una funzione di callback che viene eseguita dopo che il Renderer ha trasferito i dati dell'array dell'attributo alla GPU.

### [property:Object updateRange]

Oggetto contenente:
[page:Integer offset]: Il valore predefinito è `0`. Posizione da cui inizia l'aggiornamento.
[page:Integer count]: Il valore predefinito è `-1`, il che significa non utilizzare intervalli di aggiornamento.
Può essere utilizzato solo per aggiornare alcuni componenti dei vettori memorizzati (per esempio, solo il componente relativo al colore).

### [property:Usage usage]

Definisce il modello di utilizzo previsto per l'archivio dati a fini di ottimizzazione. Corrisponde al paramentro `usage` di [link:https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/bufferData WebGLRenderingContext.bufferData](). Il valore predefinito è [page:BufferAttributeUsage StaticDrawUsage]. Vedi le [page:BufferAttributeUsage costanti] di utilizzo per tutti i valori possibili.
Nota: Dopo l'utilizzo iniziale di un buffer, il suo utilizzo non può essere modificato. Invece, istanziane uno nuovo e imposta l'utilizzo desiderato prima del rendering successivo.

### [property:Integer version]

Un numero di versione, incrementato ogni volta che la proprietà [page:BufferAttribute.needsUpdate needsUpdate] viene impostata a true.

## Metodi

### [method:this applyMatrix3]( [param:Matrix3 m] )

Applica la matrice [page:Matrix3 m] ad ogni elemento Vector3 di questo BufferAttribute.

### [method:this applyMatrix4]( [param:Matrix4 m] )

Applica la matrice [page:Matrix4 m] ad ogni elemento Vector3 di questo BufferAttribute.

### [method:this applyNormalMatrix]( [param:Matrix3 m] )

Applica la matrice normale [page:Matrix3 m] ad ogni elemento Vector3 di questo BufferAttribute.

### [method:this transformDirection]( [param:Matrix4 m] )

Applica la matrice [page:Matrix4 m] ad ogni elemento Vector3 di questo BufferAttribute, interpretando gli elementi come vettori direzionali.

### [method:BufferAttribute clone]()

Restituisce una copia di questo bufferAttribute.

### [method:this copy]( [param:BufferAttribute bufferAttribute] )

Copia un altro BufferAttribute in questo BufferAttribute.

### [method:this copyArray]( array )

Copia l'array fornito qui (il quale può essere un normale array o un array tipizzato) nell'[page:BufferAttribute.array array].
Vedi [link:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/set TypedArray.set] per le note sui requisiti se si copia un TypedArray.

### [method:this copyAt] ( [param:Integer index1], [param:BufferAttribute bufferAttribute], [param:Integer index2] )

Copia un vettore da bufferAttribute[index2] a [page:BufferAttribute.array array][index1].

### [method:Number getComponent]( [param:Integer index], [param:Integer component] )

Returns the given component of the vector at the given index.

### [method:Number getX]( [param:Integer index] )

Restituisce il componente x del vettore in corrispondenza dell'indice specificato.

### [method:Number getY]( [param:Integer index] )

Restituisce il componente y del vettore in corrispondenza dell'indice specificato.

### [method:Number getZ]( [param:Integer index] )

Restituisce il componente z del vettore in corrispondenza dell'indice specificato.

### [method:Number getW]( [param:Integer index] )

Restituisce il componente w del vettore in corrispondenza dell'indice specificato.

### [method:this onUpload]( [param:Function callback] )

Imposta il valore della proprietà onUploadCallback.
Nel [example:webgl_buffergeometry WebGL / Buffergeometry] questo metodo viene utilizzato per liberare memoria dopo che il buffer è stato trasferito alla GPU.

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

value -- un [page:Array] o [page:TypedArray] dal quale copiare i valori.
offset -- (opzionale) indice dell'[page:BufferAttribute.array array] da cui iniziare la copia.
Chiama [link:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/set TypedArray.set]( [page:Array value], [page:Integer offset] ) sull'[page:BufferAttribute.array array].
In particolare, si veda questa pagina per i requisiti sul [page:Array value] che deve essere un [page:TypedArray].

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

Imposta [page:BufferAttribute.usage usage] a value. Vedi le [page:BufferAttributeUsage costanti] di utilizzo per tutti i possibili valori di input.
Nota: Dopo l'utilizzo iniziale di un buffer, il suo utilizzo non può cambiare. Invece, istanziane uno nuovo e imposta l'utilizzo desiderato prima del rendering successivo.

### [method:Number setComponent]( [param:Integer index], [param:Integer component], [param:Float value] )

Sets the given component of the vector at the given index.

### [method:this setX]( [param:Integer index], [param:Float x] )

Imposta il componente x del vettore in corrispondenza dell'indice specificato.

### [method:this setY]( [param:Integer index], [param:Float y] )

Imposta il componente y del vettore in corrispondenza dell'indice specificato.

### [method:this setZ]( [param:Integer index], [param:Float z] )

Imposta il componente z del vettore in corrispondenza dell'indice specificato.

### [method:this setW]( [param:Integer index], [param:Float w] )

Imposta il componente w del vettore in corrispondenza dell'indice specificato.

### [method:this setXY]( [param:Integer index], [param:Float x], [param:Float y] )

Imposta i componenti x e y del vettore in corrispondenza dell'indice specificato.

### [method:this setXYZ]( [param:Integer index], [param:Float x], [param:Float y], [param:Float z] )

Imposta i componenti x, y e z del vettore in corrispondenza dell'indice specificato.

### [method:this setXYZW]( [param:Integer index], [param:Float x], [param:Float y], [param:Float z], [param:Float w] )

Imposta i componenti x, y, z e w del vettore in corrispondenza dell'indice specificato.

## Source

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