# [name]

Cette classe stocke les données d'un attribut (telles que les positions des sommets, les indices de face, les normales, couleurs, UV et tout attribut personnalisé) associé à une [page:BufferGeometry], qui permet une transmission plus efficace des données au GPU. Voir cette page pour plus de détails et un exemple d'utilisation. Lorsque vous travaillez avec des données de type vecteur, les méthodes d'assistance .fromBufferAttribute( attribute, index ) des classes [page:Vector2.fromBufferAttribute Vector2], [page:Vector3.fromBufferAttribute Vector3], [page:Vector4.fromBufferAttribute Vector4], et [page:Color.fromBufferAttribute Color] peuvent être utiles.

## Constructeur

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

[page:TypedArray array] -- Doit être un [link:https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/TypedArray TypedArray]. Utilisé pour instancier un tampon (buffer).
Ce tableau devrait avoir `itemSize * numVertices` éléments, où numVertices est le nombre de sommets dans le [page:BufferGeometry BufferGeometry].
[page:Integer itemSize] -- Le nombre de valeurs du tableau qui doivent être associées à un sommet particulier. Par exemple, si l'attribut stocke un vecteur à 3 composants (tel qu'une position, une normale ou une couleur), alors itemSize doit être 3.
[page:Boolean normalized] -- (optionnel) S'applique uniquement aux données entières. Indique comment les données sous-jacentes dans le tampon correspond aux valeurs du code GLSL. Par exemple, si [page:TypedArray array] est une instance de UInt16Array, et [page:Boolean normalized] est `true`, les valeurs `0 - +65535` dans le tableau de données seront mappées à 0.0f - +1.0f dans l'attribut GLSL. Un Int16Array (signé) mapperait de -32768 - +32767 à -1.0f - +1.0f. Si [page:Boolean normalized] est faux, les valeurs sera converti en flottants non modifiés, c'est-à-dire que 32767 devient 32767.0f.

## Propriétés

### [property:TypedArray array]

Le tableau [page:TypedArray array] contenant les données stockées dans le tampon.

### [property:Integer count]

Stocke la longueur du tableau [page:BufferAttribute.array array] divisée par [page:BufferAttribute.itemSize itemSize]. Read-only property.
Si le tampon stocke un vecteur à 3 composants (tel qu'une position, une normale ou une couleur), cela comptera alors le nombre de ces vecteurs stockés.

### [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]

Booléen en lecture seule pour vérifier si un objet donné est de type[name].

### [property:Integer itemSize]

La longueur des vecteurs qui sont stockés dans le [page:BufferAttribute.array array].

### [property:String name]

Nom optionnel pour cette instance d'attribut. La valeur par défaut est une chaîne vide.

### [property:Boolean needsUpdate]

Booléen indiquant que cet attribut a changé et doit être renvoyé au GPU. Définissez-le sur true lorsque vous modifiez la valeur du tableau.
Le définir sur 'true' revient à incrémenter la [page:BufferAttribute.version version].

### [property:Boolean normalized]

Indique comment les données sous-jacentes dans la mémoire tampon sont mappées aux valeurs du code de nuanceur GLSL. Voir le constructeur ci-dessus pour plus de détails.

### [property:Function onUploadCallback]

Une fonction de rappel qui est exécutée après que le Renderer a transféré les données du tableau d'attributs au GPU.

### [property:Object updateRange]

Object contenant:
[page:Integer offset]: La valeur par défaut est `0`. Position à laquelle commencer la mise à jour.
[page:Integer count]: La valeur par défaut est `-1`, ce qui signifie ne pas utiliser les plages de mise à jour.
Cela peut être utilisé pour mettre à jour uniquement certains composants de vecteurs stockés (par exemple, seul le composant lié à la couleur).

### [property:Usage usage]

Définit le modèle d'utilisation prévu du magasin de données à des fins d'optimisation. Correspond au paramètre `usage` de [link:https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/bufferData WebGLRenderingContext.bufferData](). La valeur par défaut est [page:BufferAttributeUsage StaticDrawUsage]. Voir les [page:BufferAttributeUsage constants] d'utilisation pour toutes les valeurs possibles.
Remarque : Après la première utilisation d'un tampon, son utilisation ne peut pas être modifiée. Au lieu de cela, instanciez-en un nouveau et définissez l'utilisation souhaitée avant le prochain rendu.

### [property:Integer version]

Un numéro de version incrémenté à chaque fois que la propriété [page:BufferAttribute.needsUpdate needsUpdate] est définie sur `true`.

## Méthodes

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

Applique la matrice [page:Matrix3 m] à chaque élément Vector3 de ce BufferAttribute.

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

Applique la matrice [page:Matrix4 m] à chaque élément Vector3 de ce BufferAttribute.

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

Applique la matrice de normales [page:Matrix3 m] à chaque élément Vector3 de ce BufferAttribute.

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

Applique la matrice [page:Matrix4 m] à chaque élément Vector3 de ce BufferAttribute, en interprétant les éléments comme des vecteurs directionnels.

### [method:BufferAttribute clone]()

Renvoie une copie de ce bufferAttribute.

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

Copie un autre BufferAttribute à ce BufferAttribute.

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

Copie le tableau donné ici (qui peut être un tableau classique ou un TypedArray) vers un [page:BufferAttribute.array array].
Consulter [link:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/set TypedArray.set] pour lire les exigences en cas de copie d'un TypedArray.

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

Copie un vecteur de bufferAttribute[index2] à [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] )

Renvoie le composant x d'un vecteur à l'index donné.

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

Renvoie le composant y d'un vecteur à l'index donné.

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

Renvoie le composant z d'un vecteur à l'index donné.

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

Renvoie le composant w d'un vecteur à l'index donné.

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

Définit la valeur d'une propriété onUploadCallback.
Dans l'exemple [example:webgl_buffergeometry WebGL / Buffergeometry] ceci est utilisé pour libérer de la mémoire après le transfert du tampon vers le GPU.

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

value -- un [page:Array] ou [page:TypedArray] depuis lequel copier les valeurs
offset -- (optionnel) index du [page:BufferAttribute.array array] depuis lequel commencer la copie.
Appelle [link:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/set TypedArray.set]( [page:Array value], [page:Integer offset] ) sur le [page:BufferAttribute.array array].
En particulier, consultez cette page pour les exigences relatives à la valeur [page:Array value] en tant que [page:TypedArray].

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

Définit [page:BufferAttribute.usage usage] sur la valeur. Voir les [page:BufferAttributeUsage constants] pour toutes les valeurs d'entrée possibles.
Remarque : Après la première utilisation d'un tampon, son utilisation ne peut pas être modifiée. Au lieu de cela, instanciez-en un nouveau et définissez l'utilisation souhaitée avant le prochain rendu.

### [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] )

Définit la composante x du vecteur à l'indice donné.

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

Définit la composante y du vecteur à l'indice donné.

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

Définit la composante z du vecteur à l'indice donné.

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

Définit la composante w du vecteur à l'indice donné.

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

Définit les composantes x et y du vecteur à l'indice donné.

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

Définit les composantes x, y et z du vecteur à l'indice donné.

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

Définit les composantes x, y, z et w du vecteur à l'indice donné.

## Source

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