WebGLRenderingContext.bufferData()
La méthode WebGLRenderingContext.bufferData()
de l'API WebGL initialise et crée le magasin de données de l'objet tampon.
Syntaxe
// WebGL1:
void gl.bufferData(cible, taille, utilisation);
void gl.bufferData(cible, ArrayBuffer? donneesSrc, utilisation);
void gl.bufferData(cible, ArrayBufferView donneesSrc, utilisation);
// WebGL2:
void gl.bufferData(cible, ArrayBufferView donneesSrc, utilisation, decalageSrc, longueur);
Paramètres
- cible
-
Un
GLenum
(en-US) spécifiant le point de liaison (cible). Valeurs possibles :gl.ARRAY_BUFFER
: tampon contenant des attributs de sommet, tels que des coordonnées de sommet, des données de coordonnées de texture ou des données de couleurs de sommet ;gl.ELEMENT_ARRAY_BUFFER
: tampon utilisé pour les indices d'éléments ;- lors de l'utilisation d'un WebGL context 2, les valeurs suivantes sont en outre disponibles :
gl.COPY_READ_BUFFER
: tampon pour la copie d'un objet tampon à un autre ;gl.COPY_WRITE_BUFFER
: tampon pour la copie d'un objet tampon à un autre ;gl.TRANSFORM_FEEDBACK_BUFFER
: tampon pour les opérations de retour de transformation ;gl.UNIFORM_BUFFER
: tampon utilisé pour stocker des blocs uniform ;gl.PIXEL_PACK_BUFFER
: tampon utilisé pour les opérations de transfert de pixels ;gl.PIXEL_UNPACK_BUFFER
: tampon utilisé pour les opérations de transfert de pixels.
- taille
-
Un
GLsizeiptr
(en-US) définissant la taille du magasin de données de l'objet tampon. - donneesSrc Facultatif
-
Un
ArrayBuffer
,SharedArrayBuffer
ou l'un des types de tableau typésArrayBufferView
(en-US) à copier dans le magasin de données. Sinull
, un magasin de données est quand même créé, mais son contenu n'est ni initialisé, ni défini. - utilisation
-
Un
GLenum
(en-US) indiquant le modèle d'utilisation du magasin de données. Valeurs possibles :gl.STATIC_DRAW
: le contenu du tampon est susceptible d'être utilisé souvent mais de ne pas changer souvent ; du contenu est écrit dans le tampon, mais non lu ;gl.DYNAMIC_DRAW
: le contenu du tampon est susceptible d'être souvent utilisé et de changer souvent ; du contenu est écrit dans le tampon, mais non lu ;gl.STREAM_DRAW
: le contenu du tampon est susceptible de ne pas être utilisé souvent ; du contenu est écrit dans le tampon, mais non lu ;- lors de l'utilisation d'un WebGL 2 context, les valeurs suivantes sont en outre disponibles :
gl.STATIC_READ
: le contenu du tampon est susceptible d'être utilisé souvent et de ne pas changer souvent ; du contenu est lu depuis le tampon, mais non écrit ;gl.DYNAMIC_READ
: le contenu du tampon est susceptible d'être utilisé souvent et de changer souvent ; du contenu est lu depuis le tampon, mais non écrit ;gl.STREAM_READ
: le contenu du tampon est susceptible de ne pas être utilisé souvent ; du contenu est lu depuis le tampon, mais non écrit ;gl.STATIC_COPY
: le contenu du tampon est susceptible d'être utilisé souvent et de ne pas changer souvent ; aucun contenu n'est écrit ou lu par l'utilisateur ;gl.DYNAMIC_COPY
: le contenu du tampon est susceptible d'être utilisé souvent et de changer souvent ; aucun contenu n'est écrit ou lu par l'utilisateur ;gl.STREAM_COPY
: le contenu du tampon est susceptible d'être utilisé souvent et de ne pas changer souvent ; aucun contenu n'est écrit ou lu par l'utilisateur.
- decalageSrc
-
Un
GLuint
(en-US) indiquant le décalage d'indice d'élément où commencer à lire dans le tampon. longueur
Facultatif-
Un
GLuint
(en-US) valant 0 par défaut.
Valeur retournée
Aucune.
Exceptions
- Une erreur
gl.OUT_OF_MEMORY
est déclenchée si le contexte ne peut pas créer un magasin de données de lataille
indiquée. - Une erreur
gl.INVALID_VALUE
est déclenchée sitaille
est négative. - Une erreur
gl.INVALID_ENUM
est déclenchée sicible
ouutilisation
ne sont pas l'un des enums autorisés.
Exemples
Utilisation de bufferData
var canevas = document.getElementById('canevas');
var gl = canevas.getContext('webgl');
var tampon = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER, tampon);
gl.bufferData(gl.ARRAY_BUFFER, 1024, gl.STATIC_DRAW);
Récupération de l'information de tampon
Pour vérifier l'utilisation du tampon en cours et la taille du tampon, utiliser la méthode WebGLRenderingContext.getBufferParameter()
(en-US).
gl.getBufferParameter(gl.ARRAY_BUFFER, gl.BUFFER_SIZE);
gl.getBufferParameter(gl.ARRAY_BUFFER, gl.BUFFER_USAGE);
Spécifications
Specification |
---|
WebGL Specification # 5.14.5 |
Compatibilité des navigateurs
BCD tables only load in the browser