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
Spécification | Statut | Commentaire |
---|---|---|
WebGL 1.0 La définition de 'WebGLProgram' dans cette spécification. |
Recommendation | Définition initale. |
Compatibilité des navigateurs
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.
Ordinateur | Mobile | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Support simple | Chrome Support complet 9 | Edge Support complet 12 | Firefox Support complet 4 | IE Support complet 11 | Opera Support complet 12 | Safari Support complet 5.1 | WebView Android Support complet Oui | Chrome Android Support complet 25 | Edge Mobile Support complet Oui | Firefox Android Support complet Oui | Opera Android Support complet 12 | Safari iOS Support complet 8.1 | Samsung Internet Android Support complet Oui |
Available in workers | Chrome Aucun support Non | Edge Aucun support Non | Firefox
Support complet
44
| IE Aucun support Non | Opera Aucun support Non | Safari Aucun support Non | WebView Android Aucun support Non | Chrome Android Aucun support Non | Edge Mobile Aucun support Non | Firefox Android Aucun support Non | Opera Android Aucun support Non | Safari iOS Aucun support Non | Samsung Internet Android Aucun support Non |
Légende
- Support complet
- Support complet
- Aucun support
- Aucun support
- Fonctionnalité expérimentale. Celle-ci peut être amenée à changer par la suite.
- Fonctionnalité expérimentale. Celle-ci peut être amenée à changer par la suite.
- Une action explicite de l'utilisateur est nécessaire pour activer cette fonctionnalité.
- Une action explicite de l'utilisateur est nécessaire pour activer cette fonctionnalité.
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()