--- title: WebGLShader slug: Web/API/WebGLShader tags: - Reference - WebGL - WebGLShader translation_of: Web/API/WebGLShader ---
Le WebGLShader fait partie de l'API WebGL et peut être un shader de sommet ou de fragment. Un {{domxref ("WebGLProgram")}} requiert les deux types de shaders.
Pour créer un WebGLShader, utiliser {{domxref("WebGLRenderingContext.createShader")}}, puis reliez-y le code source GLSL en utilisant {{domxref("WebGLRenderingContext.shaderSource()")}}, et enfin, appelez {{domxref ("WebGLRenderingContext.compileShader()")}} pour terminer et compiler le shader. À ce stade, le WebGLShader n'est toujours pas sous une forme utilisable et doit toujours être relié à un {{domxref ("WebGLProgram")}}.
function creerShader (gl, codeSource, type) {
// Compile un shader de type soit gl.VERTEX_SHADER, soit gl.FRAGMENT_SHADER
var shader = gl.createShader( type );
gl.shaderSource( shader, codeSource );
gl.compileShader( shader );
if ( !gl.getShaderParameter(shader, gl.COMPILE_STATUS) ) {
var info = gl.getShaderInfoLog( shader );
throw 'Impossible de compiler le programme WebGL.\n\n' + info;
}
return shader;
}
Voir {{domxref("WebGLProgram")}} pour des informations sur la liaison de shaders.
Notez qu'il existe de nombreuses autres stratégies pour écrire des chaînes de code source de shader et y accéder. Ces exemples sont à titre d'illustration seulement.
var sourceShaderDeSommet =
'attribute vec4 position;\n' +
'void main() {\n' +
' gl_Position = position;\n' +
'}\n';
// Utilisez la function creerShader de l'exemple ci-dessus
var shaderDeSommet = creerShader(gl, sourceShaderDeSommet, gl.VERTEX_SHADER)
var sourceShaderDeFragment =
'void main() {\n' +
' gl_FragColor = vec4(1.0, 1.0, 1.0, 1.0);\n' +
'}\n';
// Utilisez la fonction creerShader de l'exemple ci-dessus
var shaderDeFragment = creerShader(gl, sourceShaderDeFragment, gl.FRAGMENT_SHADER)
| Spécification | Statut | Commentaire |
|---|---|---|
| {{SpecName('WebGL', "#5.8", "WebGLShader")}} | {{Spec2('WebGL')}} | Définition initiale. |
La table de compatibilité de cette page est générée à partir de données structurées. Si vous souhaitez contribuer aux données, voyez https://github.com/mdn/browser-compat-data et envoyez nous une pull request.
{{Compat("api.WebGLShader.WebGLShader")}}