WebGLRenderingContext.bufferData()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

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 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 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 à 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 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 indiquant le décalage d'indice d'élément où commencer à lire dans le tampon.

longueur Facultatif

Un GLuint 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().

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