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.