Détecter WebGL

Dans cet exemple, on voit comment détecter un contexte de rendu WebGL et afficher le résultat à l'utilisateur.

Détecter le support WebGL

Dans ce premier exemple, on vérifie si le navigateur prend en charge WebGL. Pour cela, on essaye d'obtenir le contexte de rendu WebGL à partir d'un élément canvas. Le contexte de rendu WebGL est une interface qui permet de connaître et de modifier l'état du moteur graphique WebGL, d'envoyer des données à WebGL et d'exécuter des commandes de dessin.

La gestion d'une machine graphique au sein d'une seule interface n'est pas propre à WebGL. Les autres {̣{Glossary("API")}} graphiques comme le contexte de rendu 2D du canevas. Cependant, les propriétés et variables qui peuvent être manipulées changent d'une API à l'autre.

<p>[ On affichera ici le résultat de la détection du support WebGL ]</p>
<button>Cliquez ici pour détecter WebGLRenderingContext</button>
body {
  text-align : center;
}
button {
  display : block;
  font-size : inherit;
  margin : auto;
  padding : 0.6em;
}
// On exécute tout dans le gestionnaire d'événement
// correspondant au chargement de la fenêtre. De cette
// façon, le DOM est complètement chargé et mis en forme
// avant de le manipuler.
window.addEventListener("load", function() {
  var paragraph = document.querySelector("p"),
    button = document.querySelector("button");

  // On ajoute un gestionnaire d'événement pour
  // le clic sur le bouton
  button.addEventListener("click", detectWebGLContext, false);
  function detectWebGLContext () {

    // On crée un élément canvas. Le canvas n'est pas
    // ajouté au document et il n'est donc jamais
    // affiché dans la fenêtre du navigateur
    var canvas = document.createElement("canvas");

    // On récupère le contexte WebGLRenderingContext
    // depuis l'élément canvas.
    var gl = canvas.getContext("webgl")
      || canvas.getContext("experimental-webgl");

    // On affiche le résultat.
    if (gl && gl instanceof WebGLRenderingContext) {
      paragraph.innerHTML =
        "Félicitations, votre navigateur supporte WebGL.";
    } else {
      paragraph.innerHTML = "Échec du contexte WebGL. "
        + "Votre navigateur peut ne pas supporter WebGL.";
    }
  }
}, false);

Le code source de cet exemple est également disponible sur GitHub.