WebGLProgram
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.
Le WebGLProgram fait partie de l'API WebGL et il est une combinaison de deux 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 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 WebGLRenderingContext.deleteProgram()
. Cela libère la mémoire du programme lié.
gl.deleteProgram(programme);
Spécifications
Specification |
---|
WebGL Specification # 5.6 |
Compatibilité des navigateurs
BCD tables only load in the browser
Voir aussi
WebGLShader
WebGLRenderingContext.attachShader()
WebGLRenderingContext.compileShader()
WebGLRenderingContext.createProgram()
WebGLRenderingContext.createShader()
WebGLRenderingContext.deleteProgram()
WebGLRenderingContext.deleteShader()
WebGLRenderingContext.detachShader()
WebGLRenderingContext.getAttachedShaders()
WebGLRenderingContext.getProgramParameter()
WebGLRenderingContext.getProgramInfoLog()
WebGLRenderingContext.getShaderParameter()
WebGLRenderingContext.getShaderPrecisionFormat()
WebGLRenderingContext.getShaderInfoLog()
WebGLRenderingContext.getShaderSource()
WebGLRenderingContext.isProgram()
WebGLRenderingContext.isShader()
WebGLRenderingContext.linkProgram()
WebGLRenderingContext.shaderSource()
WebGLRenderingContext.useProgram()
WebGLRenderingContext.validateProgram()