On supposera ici que l'on dispose de deux fichiers:
On aura besoin d'un canvas pour faire du WebGL donc l'index.html devra contenir le code suivant :
<html>
<head>
<!-- [...] -->
<!-- Pour rappelle l'attribut defer fait la même chose que onDOMContentLoaded -->
<script src="js/index.js" defer></script>
</head>
<body>
<!-- [...] -->
<canvas id="webgl-canvas" width="800px" height="800px"></canvas>
<!-- [...] -->
</body>
</html>
Une fois que l'on dispose d'un canvas côté on va pouvoir s'occuper de l'initisation pour cela on va :
Dans une application graphique on a généralement trois fonctions principales :
De plus la fonction update doit être appelé de manière périodique, on utilise requestAnimationFrame pour ça
Voici un résumé de ce que l'on a dit.
"use strict";
/** @type{HTMLCanvasElement} */
const cnv = document.querySelector("#webgl-canvas")
/** @type {WebGLRenderingContext} */
const gl = cnv.getContext("webgl2")
let backgroundColor = {
r : 0.1,
g : 0.3,
b : 0.2
}
function start() {
// Initialisation de la logique
// Redimensionne le context en fonction de la taille du canvas
gl.viewport(0,0, gl.canvas.width, gl.canvas.height);
// Définie la couleur du fond du canvas
gl.clearColor(
backgroundColor.r,
backgroundColor.g,
backgroundColor.b,
1.0 // alpha
);
requestAnimationFrame(update);
}
function update() {
// Mise à jour de la logique
render();
requestAnimationFrame(update);
}
function render() {
// Efface l'écran avec backgroundColor
gl.clear(gl.COLOR_BUFFER_BIT);
// D'ailleurs, comment faire pour changer la couleur du fond
// au cours du temps ?
// Ici on affichera des choses...
}
eof