A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://developer.cdn.mozilla.net/fr/docs/Web/API/WebGL_API/By_example/Canvas_size_and_WebGL below:

Tailles de canvas et WebGL - Les API Web

Grâce aux méthodes scissor() et clear() on peut démontrer que le tampon (buffer) de dessin WebGL est affecté par la taille du canevas (l'élément HTML canvas).

La taille du premier canevas est définie avec la taille de l'élément, mis en forme, qui est déterminée par CSS. Pour cela, on affecte respectivement les valeurs clientWidth and clientHeight aux propriétés width et height.

Pour le deuxième canevas, on n'applique pas ce traitement, c'est donc les dimensions internes du canevas : width et height qui sont prises en compte. Celles-ci sont différentes des dimensions de l'élément canvas affiché dans le fenêtre du navigateur.

L'effet devient visible quand on utilise les méthodes scissor() et clear() pour dessiner un carré au centre du canevas en définissant sa position et sa taille en pixels. Dans le premier canevas, on obtient bien le bon résultat et dans le deuxième, on a la mauvaise forme, la mauvaise taille et la mauvaise position.

<p>On compare les deux canevas.</p>
<canvas
  >Votre navigateur ne semble pas supporter l'élément HTML5 canvas.</canvas
>
<canvas
  >Votre navigateur ne semble pas supporter l'élément HTML5 canvas.</canvas
>
body {
  text-align: center;
}
canvas {
  width: 120px;
  height: 80px;
  margin: auto;
  padding: 0;
  border: none;
  background-color: black;
}
window.addEventListener(
  "load",
  function () {
    "use strict";
    var firstCanvas = document.getElementsByTagName("canvas")[0],
      secondCanvas = document.getElementsByTagName("canvas")[1];

    // Ici on applique le traitement spécifique au premier
    // canevas
    firstCanvas.width = firstCanvas.clientWidth;
    firstCanvas.height = firstCanvas.clientHeight;

    // Ensuite on traite les deux canevas de la même façon
    [firstCanvas, secondCanvas].forEach(function (canvas) {
      var gl =
        canvas.getContext("webgl") || canvas.getContext("experimental-webgl");
      if (!gl) {
        document.querySelector("p").innerHTML =
          "Échec de l'obtention du contexte WebGL. " +
          "Votre navigateur peut ne pas supporter WebGL.";
        return;
      }
      gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);
      gl.enable(gl.SCISSOR_TEST);
      gl.scissor(30, 10, 60, 60);
      gl.clearColor(1.0, 1.0, 0.0, 1.0);
      gl.clear(gl.COLOR_BUFFER_BIT);
    });
  },
  false,
);

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


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4