diff options
| author | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 14:40:17 -0500 |
|---|---|---|
| committer | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 14:40:17 -0500 |
| commit | 33058f2b292b3a581333bdfb21b8f671898c5060 (patch) | |
| tree | 51c3e392513ec574331b2d3f85c394445ea803c6 /files/fr/web/api/webgl_api/by_example/hello_glsl | |
| parent | 8b66d724f7caf0157093fb09cfec8fbd0c6ad50a (diff) | |
| download | translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.gz translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.bz2 translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.zip | |
initial commit
Diffstat (limited to 'files/fr/web/api/webgl_api/by_example/hello_glsl')
| -rw-r--r-- | files/fr/web/api/webgl_api/by_example/hello_glsl/index.html | 159 |
1 files changed, 159 insertions, 0 deletions
diff --git a/files/fr/web/api/webgl_api/by_example/hello_glsl/index.html b/files/fr/web/api/webgl_api/by_example/hello_glsl/index.html new file mode 100644 index 0000000000..b26df25f0f --- /dev/null +++ b/files/fr/web/api/webgl_api/by_example/hello_glsl/index.html @@ -0,0 +1,159 @@ +--- +title: Hello GLSL +slug: Web/API/WebGL_API/By_example/Hello_GLSL +tags: + - Apprendre + - Débutant + - Exemple + - Graphisme + - Tutoriel + - WebGL +translation_of: Web/API/WebGL_API/By_example/Hello_GLSL +--- +<div>{{IncludeSubnav("/fr/Apprendre")}}</div> + +<p>{{PreviousNext("Apprendre/WebGL/Par_exemple/Une_pluie_de_rectangle","Apprendre/WebGL/Par_exemple/Introduction_aux_attributs_vertex")}}</p> + +<p class="summary">Dans cet article, on décrit un programme de manipulation de <em>shaders</em> qui dessine un carré de couleur.</p> + +<div class="note"> +<p><strong>Note :</strong> Cet exemple devrait fonctionner pour l'ensemble des navigateurs récents. Cependant, pour les versions anciennes ou mobiles, il peut y avoir des dysfonctionnements. Si le canevas reste blanc, vous pouvez vérifier le résultat avec l'exemple suivant qui dessine exactement la même chose. Assurez-vous de bien lire les explications et le code présent sur cette page avant de passer à la suivante.</p> +</div> + +<p>{{EmbedLiveSample("Hello_World_en_GLSL",660,425)}}</p> + +<h3 id="Hello_World_en_GLSL"><em>Hello World</em> en GLSL</h3> + +<p>Voici un exemple de premier programme qu'on peut écrire pour manipuler des <em>shaders</em>.</p> + +<pre class="brush: html hidden"><p>Hello World! Hello GLSL!</p> +<canvas>Votre navigateur semble ne pas + supporter l'élément HTML5.</canvas> +</pre> + +<pre class="brush: css hidden">body { + text-align : center; +} +canvas { + width : 280px; + height : 210px; + margin : auto; + padding : 0; + border : none; + background-color : black; +} + +button { + display : block; + font-size : inherit; + margin : auto; + padding : 0.6em; +} +</pre> + +<pre class="brush: html"><script type="x-shader/x-vertex" id="vertex-shader"> +#version 100 +void main() { + gl_Position = vec4(0.0, 0.0, 0.0, 1.0); + gl_PointSize = 64.0; +} +</script> +</pre> + +<pre class="brush: html"><script type="x-shader/x-fragment" id="fragment-shader"> +#version 100 +void main() { + gl_FragColor = vec4(0.18, 0.54, 0.34, 1.0); +} +</script> +</pre> + +<pre class="brush: js hidden">;(function(){ +</pre> + +<pre class="brush: js">"use strict" +window.addEventListener("load", setupWebGL, false); +var gl, + program; +function setupWebGL (evt) { + window.removeEventListener(evt.type, setupWebGL, false); + if (!(gl = getRenderingContext())) + return; + + var source = document.querySelector("#vertex-shader").innerHTML; + var vertexShader = gl.createShader(gl.VERTEX_SHADER); + gl.shaderSource(vertexShader,source); + gl.compileShader(vertexShader); + source = document.querySelector("#fragment-shader").innerHTML + var fragmentShader = gl.createShader(gl.FRAGMENT_SHADER); + gl.shaderSource(fragmentShader,source); + gl.compileShader(fragmentShader); + program = gl.createProgram(); + gl.attachShader(program, vertexShader); + gl.attachShader(program, fragmentShader); + gl.linkProgram(program); + gl.detachShader(program, vertexShader); + gl.detachShader(program, fragmentShader); + gl.deleteShader(vertexShader); + gl.deleteShader(fragmentShader); + if (!gl.getProgramParameter(program, gl.LINK_STATUS)) { + var linkErrLog = gl.getProgramInfoLog(program); + cleanup(); + document.querySelector("p").innerHTML = + "La liaison du programme a échoué." + + "Journal d'erreur : " + linkErrLog; + return; + } + + initializeAttributes(); + + gl.useProgram(program); + gl.drawArrays(gl.POINTS, 0, 1); + + cleanup(); +} + +var buffer; +function initializeAttributes() { + gl.enableVertexAttribArray(0); + buffer = gl.createBuffer(); + gl.bindBuffer(gl.ARRAY_BUFFER, buffer); + gl.vertexAttribPointer(0, 1, gl.FLOAT, false, 0, 0); +} + +function cleanup() { +gl.useProgram(null); +if (buffer) + gl.deleteBuffer(buffer); +if (program) + gl.deleteProgram(program); +} +</pre> + +<pre class="brush: js hidden">function getRenderingContext() { + var canvas = document.querySelector("canvas"); + canvas.width = canvas.clientWidth; + canvas.height = canvas.clientHeight; + var gl = canvas.getContext("webgl") + || canvas.getContext("experimental-webgl"); + if (!gl) { + var paragraph = document.querySelector("p"); + paragraph.innerHTML = "Échec de l'obtention du contexte" + + " WebGL. Votre navigateur ne supporte peut-être" + + " pas WebGL."; + return null; + } + gl.viewport(0, 0, + gl.drawingBufferWidth, gl.drawingBufferHeight); + gl.clearColor(0.0, 0.0, 0.0, 1.0); + gl.clear(gl.COLOR_BUFFER_BIT); + return gl; +} +</pre> + +<pre class="brush: js hidden">})(); +</pre> + +<p>Le code source de cet exemple est également disponible sur <a href="https://github.com/idofilin/webgl-by-example/tree/master/hello-glsl">GitHub</a>.</p> + +<p>{{PreviousNext("Apprendre/WebGL/Par_exemple/Une_pluie_de_rectangle","Apprendre/WebGL/Par_exemple/Introduction_aux_attributs_vertex")}}</p> |
