--- title: WebGLProgram slug: Web/API/WebGLProgram tags: - WebGL - WebGLProgram translation_of: Web/API/WebGLProgram ---
{{APIRef("WebGL")}}

Le WebGLProgram fait partie de l'API WebGL et il est une combinaison de deux {{domxref ("WebGLShader")}} compilés constitués d'un shader de sommet et d'un shader de fragment (tous deux écrits en GLSL). Ces dernier sont ensuite liés dans un programme utilisable.

var programme = gl.createProgram();

// Lier les shaders préexistants
gl.attachShader(programme, shaderDeSommet);
gl.attachShader(programme, shaderDeFragment);

gl.linkProgram(programme);

if ( !gl.getProgramParameter( programme, gl.LINK_STATUS) ) {
  var info = gl.getProgramInfoLog(programme);
  throw 'Impossible de compiler le program WebGL.\n\n' + info;
}

Voir {{domxref("WebGLShader")}} pour des informations sur la création de shaderDeSommet et de shaderDeFragment dans le programme ci-dessus.

Exemples

Utilisation du programme

Les étapes pour travailler effectivement avec le programme impliquent d'indiquer à la GPU d'utiliser le programme, de lier les données et les options de configuration appropriées, et enfin, de dessiner quelque chose à l'écran.

// Utiliser le programme
gl.useProgram(programme);

// Lier les données d'attribut existantes
gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
gl.enableVertexAttribArray(attributeLocation);
gl.vertexAttribPointer(attributeLocation, 3, gl.FLOAT, false, 0, 0);

// Dessiner un unique triangle
gl.drawArrays(gl.TRIANGLES, 0, 3);

Suppression du programme

S'il y a une erreur lors de l'édition de liens du programme, ou si vous voulez supprimer un programme existant, alors c'est tout simple, il suffit d'exécuter {{domxref ("WebGLRenderingContext.deleteProgram()")}}. Cela libère la mémoire du programme lié.

gl.deleteProgram(programme);

Spécifications

Spécification Statut Commentaire
{{SpecName('WebGL', "#5.6", "WebGLProgram")}} {{Spec2('WebGL')}} Définition initale.

Compatibilité des navigateurs

{{Compat("api.WebGLProgram")}}

Voir aussi