Please note, this is a STATIC archive of website developer.mozilla.org from November 2016, cach3.com does not collect or store any user information, there is no "phishing" involved.

Commencer avec WebGL

WebGL permet d'utiliser l'API basée sur OpenGL ES 2.0 pour créer un environnement 3D dans l'élément canvas

Cet article va vous donner les bases pour utiliser WebGL. Des notions de mathématiques liés à la 3D sont requises pour bien appréhender les pages suivantes. Cet article ne prétend pas vous apprendre OpenGL en lui même.

Preparer le code de la page internet

La première chose dont vous avez besoin pour créer un environnement 3D est d'un canvas. Le code HTML ci-dessous prépare l'élement canvas et utilise l'évenement onload qui va servir à intialiser le contexte WebGL.

Le texte fournit dans l'élément canvas ne sera affiché que pour les personnes utilisant des navigateurs ne supportant pas cet élément.

<body onload="start()"> 
  <canvas id="glcanvas" width="640" height="480"> 
    Votre navigateur ne semble pas supporter l'élément HTML5 <code>&lt;canvas&gt;</code>.
  </canvas> 
</body>  

Préparer le contexte WebGL

La fonction start(), dans le code JavaScript, est appelée quand la page est chargée. Son but est de créer le contexte WebGL et de commencer à dessiner du contenu.

function start() {
  var canvas = document.getElementById("glcanvas");
    
  initWebGL(canvas);      // Initialise le contexte WebGL
      
  // Continue seulement si le WebGL est disponible et est en train de fonctionner
      
  if (gl) {
    gl.clearColor(0.0, 0.0, 0.0, 1.0);                      // Met la couleur d'effacement au noir et complétement opaque
    gl.enable(gl.DEPTH_TEST);                               // Active le test de profondeur
    gl.depthFunc(gl.LEQUAL);                                // Les objets proches cachent les objets lointains
    gl.clear(gl.COLOR_BUFFER_BIT|gl.DEPTH_BUFFER_BIT);      // Efface les couleurs et le buffer de profondeur.
  }
}  

La première chose que nous faisons est d'obtenir une référence vers le canvas que l'on met dans une variable nommée canvas. Évidemment si vous n'avez pas besoin de cette référence continuellement au cours de votre programme, vous pouvez évitez d'enregistrer cette valeur globalement et juste la sauvegarder comme variable locale ou comme attribut d'un objet.

Une fois que l'on a le canvas, on appelle la fonction initWebGL(), cette fonction est définie dans le paragraphe suivant, son but est d'initialiser le contexte WebGL.

Si le contexte est initialisé et fonctionne correctement, la variable gl est une référence vers le contexte WebGL. Alors on met la couleur d'effacement au noir et on efface le contexte suivant cette couleur. Après cela, on active le test de profondeur et on définit que les objets les plus proches vont cacher les objets les plus lointains.

Le code de base est fini. Nous regarderons dans les pages suivantes comment commencer à "dessiner".

Créer le contexte WebGL

La fonction initWebGL() utilisée dans le paragraphe ci-dessus est la suivante :

function initWebGL(canvas) { 
  // Initialise la variable gloable gl à null
  gl = null; 

  try { 
    // Essaye de récupérer le contexte standard. En cas d'échec, il teste l'appel experimental
    gl = canvas.getContext("webgl") || canvas.getContext("experimental-webgl"); 
  } 
  catch(e) {} 

   // Si le contexte GL n'est pas récupéré, on l'indique à l'utilisateur.
    if (!gl) { 
      alert("Impossible d'initialiser le WebGL. Il est possible que votre navigateur ne supporte pas cette fonctionnalité."); 
  } 
}  

Pour obtenir le contexte WebGL du canvas, nous tentons de récupérer le contexte standard. En cas d'échec, on essaye de récupérer le contexte nommé "experimental-webgl". Si cela échoue aussi, alors on affiche un message d'erreur indiquant à l'utilisateur qu'il ne peut pas utiliser WebGL.

A la fin de la fonction, la variable gl est soit null (ce qui veut dire que le contexte WebGL est indisponible), soit il contient une référence au contexte WebGL dans laquelle nous allons pouvoir commencer à dessiner.

Note : Le contexte "experimental-webgl" est le nom temporaire du contexte pendant le développement de la spécification, le nom "webgl" sera utilisé une fois que la spécification sera terminée et répandue.

Désormais, vous avez assez de code pour initialiser avec succès le contexte WebGL, vous devriez obtenir une grande boîte noire qui n'attend de votre part que du contenu à afficher.

Essayer cet exemple en cliquant ici si vous utilisez un navigateur compatible avec WebGL.

Étiquettes et contributeurs liés au document

Étiquettes : 
 Contributeurs à cette page : teoli, fscholz, TimN, the prisoner
 Dernière mise à jour par : teoli,