WebGL 2 Guide - #4 Der WebGL Context

Im letzten Schritt haben wir das Grundgerüst aufgesetzt um mit WebGL arbeiten zu können. In diesem Schritt werden wir den WebGL Context erstellen und überprüfen, ob der Browser WebGL unterstützt.

Dazu erstellen wir uns eine neue Datei und nennen diese main.js. Speichert diese ebenfalls in eurem Ordner ab. In unserem Ordner haben wir nun zwei Dateien: main.js und index.html.

Nun erstellen wir uns zu erst eine Funktion namens init in der main.js und holen uns die Referenz zum Canvas:

"use-strict"

function init()
{
    // Get the canvas reference
    const canvas = document.getElementById("webgl-canvas");

    // Ensure a canvas was found
    if (!canvas)
    {
        console.error("Error: no canvas found!");
        return;
    }
}

Wir speichern uns in der Variablen canvas die Referenz zum Canvas-Element im DOM und überprüfen im nächsten Schritt, ob auch ein Canvas mit der ID: "webgl-canvas" gefunden wurde. (Ihr erinnert euch an den letzen Beitrag wo wir ein Canvas-Element mit der ID: "webgl-canvas" erstellt haben...?)

// Ensure a canvas was found
if (!canvas)
{
    console.error("Error: no canvas found!");
    return;
}

Wurde keiner gefunden, bricht die Funktion mit einer Fehlermeldung in der Konsole ab.

Bevor wir nun unsere neue Funktion testen können, müssen wir sie auch aufrufen.
Dies wollen wir aber erst, wenn die Seite auch vollständig vom Browser geladen wurde.

Um die Funktion aufzurufen, wechseln wir zu unserer index.html und fügen folgende Zeilen hinzu:

Wir erweitern das Body-Tag um einen onload - Parameter:
<body onload="init()">

onload im Body-Tag stellt sicher, dass die Funktion erst aufgerufen wird, wenn die Seite vollständig geladen wurde.

Desweiteren müssen wir die main.js unserer Seite hinzufügen, das tun wir im body - Bereich der Seite mit einem script - Tag:
<script src="main.js"></script>

Unser HTML-Code in der index.html sieht nun folgendermaßen aus:

<html >
 <head>
  <meta charset="UTF-8">
  <title>WebGL Guide</title>

  <style type="text/css">
   canvas{
    border: 2px dotted black;
   }
  </style>

 </head>

 <body onload="init()">

  <script src="main.js"></script>

  <canvas id="webgl-canvas" width="800" height="600">
   Your browser does not support the HTML5 canvas element!
   Please update your browser!
  </canvas>
 </body>
</html>

Ruft die Seite index.html nun in eurem Browser auf und schaut was passiert.

Nichts....

Als Entwickler solltet ihr euch mit den Entwicklertools des Browsers vertraut machen. In Chrome könnt ihr sie mit einem Rechtsklick auf die Seite und Untersuchen aufrufen. In Firefox könnt ihr sie ebenfalls mit einem Rechtsklick auf die Seite und dann auf Element untersuchen öffnen.





Klickt anschließend auf Console um die Konsolenausgaben anzuschauen.





Schaut einmal nach ob ihr eine Fehlermeldung sehen könnt. Habt ihr alles richtig gemacht, sollte keine Fehlermeldung erscheinen.

Ändert zum testen einmal folgende Zeile ab

const canvas = document.getElementById("webgl-canvas");

Ändert die ID "webgl-canvas" in z.B.: abc
und schaut was passiert. (Vergesst die "" dabei nicht)

const canvas = document.getElementById("abc");


Es sollte nun die Fehlermeldung: "Error: no canvas found!" in der Konsole erscheinen.






Ändert nun "abc" wieder in "webgl-canvas" ab.

Als nächstes holen wir uns den WebGL Context.
Wechselt dazu wieder in eure main.js und fügt folgende Zeilen hinzu:

// Get the WebGL context
const gl = canvas.getContext("webgl2")

// Ensure context was found
if (!gl)
{
    console.error("WebGL is not available!");
    return;
}

Die main.js sieht nun wie folgt aus:

"use-strict"

function init()
{
    // Get the canvas reference
    const canvas = document.getElementById("webgl-canvas");

    // Ensure a canvas was found
    if (!canvas)
    {
        console.error("Error: no canvas found!");
        return;
    }

    // Get the WebGL context
    const gl = canvas.getContext("webgl2")

    // Ensure context was found
    if (!gl)
    {
        console.error("WebGL is not available!");
        return;
    }
}

Ruft nun wieder die Seite im Browser auf und schaut in der Konsole nach, ob auch alles funktioniert hat. Die Fehlermeldung WebGL is not available! sollte nicht in der Konsole erscheinen.
Sollte diese Meldung doch erscheinen, dann unterstützt der Browser WebGL nicht. Es ist anzuraten, den Browser zu updaten.

Wir haben nun eine neue Variable gl erstellt in der wir die Reference zum WebGL-Context gespeichert haben.



Im nächsten Schritt werden wir nun endlich erste WebGL Befehle kennen lernen:

WebGL 2 Guide - #5 Erste WebGL Befehle

Comments

Popular posts from this blog

[Python] Machine Learning Intro #1 - Hello World

[Python] Passwort cracker for Zip-archives

WebGL 2 Guide - #1 Einführung