WebGL je standard za rad u web browser-u i kao takav, rad sa njime zavisi od konkretnog browser-a, odnosno od toga da li ga izabrani browser podr?ava. Zato je potrebno, pre po?etka rada, proveriti da li izabrani browser koji ?e se koristiti u radu podr?ava WebGL.

Ve?ina proizvo?a?a web browser-a, kao ?to je navedeno na sajtu Khronos grupe u?estvuje u formiranju WebGL specifikacije tako da poslednje verzije najpopularnijih browser-a podr?avaju rad sa WebGL-om.

Tako?e, potrebno je i da browser podr?ava HTML5 Canvas elemenat.

Canvas je html elemenat koji je namenjen za dinami?ka iscrtavanja na html5 stranicama. O n sam po sebi predstavlja obi?an container objekat (kao div), ali pozivom funkcije getContext(api-context-name) obezbe?uje objekat context kroz koji se dobija pristup interfejsu nekog API-ja koji se onda koristi za iscrtavanje po canvas elementu. WebGL je upravo jedan od ovih interfejsa.

Na osnovu prethodnog poglavlja, prvo se na stranicu dodaje canvas elemenat.

<html>
<head>
	<title>Canvas</title>
</head>
<body>  
    <canvas id="canvas_s1" width="500" height="500">  
    </canvas>  
</body>
</html>
                

Jedini atributi koje canvas elemenat ima su width i height ?ije su inicijalne vrednosti 300px i 150px. Ukoliko je potrebno promeniti dimenziju slike potrebno je promeniti i ove vrednosti.

Iako je generalno dobra praksa razdvajati sadr?aj od stilizovanja odnosno izbegavati takozvane in-line stilove, u radu sa WebGL postoji razlog da se ove dimenzije ne postave kroz css pravila. U nastavku ?e biti vi?e re?i o ovome.

Tako?e, jo? jedna dobra praksa je i misliti na korisnike koji eventualno koriste stariji browser bez podr?ke za html5 canvas. Zbog toga se, obi?no, definicija canvas elementa dopunjuje nekom napomenom koja se ne?e prikazivati kad se izvr?i iscrtavanje na njemu.

<html>
<head>
	<title>Working with canvas</title>
</head>
<body>  
    <canvas id="canvas_s1" width="500" height="500">  
        Izgleda da browser ne podr?ava HTML5 canvas elemenat. 
    </canvas>  
</body>
</html>
                

Dalje se, uz pomo? JavaScript-a se, kao ?to smo je ranije napomenuto, defini?e context objekat koji ?e se koristiti. Na stranici mo?e postojati vi?e canvas elemenata, ali svaki canvas mo?e imati samo jedan context.

<html>
<head>
	<title>Working with canvas</title>
</head>
<body>  
    <canvas id="canvas_s1" width="500" height="500">  
        Izgleda da browser ne podr?ava HTML5 <canvas> elemenat. 
    </canvas>  
    <script>
        var canvas = document.getElementById('canvas_s1');
        var context = canvas.getContext('webgl');
    </script>
</body>
</html>
                

I ovde je potrebno obezbediti re?enje za situacije kad je tra?eni context nedostupan ?to ovde zna?i bez podr?ke za WebGL.

<html>
<head>
	<title>Working with canvas</title>
</head>
<body>  
    <canvas id="canvas_s1" width="500" height="500">  
        Izgleda da browser ne podr?ava HTML5 <canvas> elemenat. 
    </canvas>  
    <script>
        var canvas = document.getElementById('canvas_s1');
        if (canvas.getContext)
        {
            var context = canvas.getContext('webgl');
            // crtanje
        } else
        {
            // akcija za fallback
        }
    </script>
</body>
</html>

                

Dalje se ova stranica dopunjuje odgovaraju?im kodom aplikacije.

<html>
<head>
	<title>Template</title>
</head>
<body>  
  <canvas id="canvas_s1" width="500" height="500">  
     Izgleda da browser ne podr?ava HTML5 <code><canvas></code> elemenat.  
  </canvas>  
  
  <script>
      var canvas;
      var gl;
      start();
	  
        //VERTEX SHADER
        //FRAGMENT SHADER
        //GET & COMPILE SHADERS
        //CREATE BUFFERS
        //DRAW

      function start() {
          var canvas = document.getElementById("canvas_s1");
          initWebGL(canvas);
      }

      function initWebGL(canvas) {
          gl = null;
          try {
              gl = canvas.getContext("webgl") || canvas.getContext("experimental-webgl");
          }
          catch (e) { }
          if (!gl) {
              alert("WebGL nije podr?an.");
          }
      }
  </script>
</body>
</html>
                

Napomena: O?ekuj praznu stranicu


swiss replica uk| hublot replica uk| replica watches uk| ladies replica watches|

Svi budu?i primeri u ovom vodi?u ?e imati strukturu fajla kao ?to je navedeno na listingu iznad, a svaki od delova prikazanih komentarom ?e u nastavku biti detaljno obja?njeni.

Mogu?e je da ?ete u primerima nailaziti na canvas.getContext(’experimental-webgl’). To je bio privremeni naziv koji se ranije koristio.

Napredak

% pre?eno

Slede?e - Kvadrat

U natavku ?e biti opisan postupak iscrtavanja kvadrata.

Slede?a lekcija