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

js
// 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és ArrayBufferView (en-US) à copier dans le magasin de données. Si null, 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 la taille indiquée.
  • Une erreur gl.INVALID_VALUE est déclenchée si taille est négative.
  • Une erreur gl.INVALID_ENUM est déclenchée si cible ou utilisation ne sont pas l'un des enums autorisés.

Exemples

Utilisation de bufferData

js
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).

js
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

Voir aussi