--- title: WebGLProgram slug: Web/API/WebGLProgram tags: - WebGL - WebGLProgram translation_of: Web/API/WebGLProgram ---
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.
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);
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écification | Statut | Commentaire |
---|---|---|
{{SpecName('WebGL', "#5.6", "WebGLProgram")}} | {{Spec2('WebGL')}} | Définition initale. |
La table de compatibilité dans cette page est générée à partir de données structurées. Si vous voulez contribuer aux données, jettez un œil à https://github.com/mdn/browser-compat-data et envoyez nous une pull request.
{{Compat("api.WebGLProgram")}}