WebGL je besplatan višeplatformski web standard za API trodimenzionalne grafike niske razine, a temeljen je na OpenGL-u ES 2.0.
Prikazuje se unutar HTML5 Canvas elementa kao DOM (Document Object Model) objekt. Temelji se na shaderima koristeći GLSL (OpenGL Shading Language) s konstruktima semantički sličnim onima u OpenGL ES 2.0
WebGL ima specifikaciju koja je vrlo slična specifikaciji OpenGL ES 2.0, s nekima razlikama bitnim za programski jezik JavaScript, koji se koristi za programiranje kod WebGL-a.
WebGL zapravo donosi 3D grafiku na web s time da nije potrebno imati instaliran neki plugin za to, već je grafika implementirana u samom web pregledniku. Gotovo svi vodeći web preglednici omogućuju WebGL i sudjeluju u razvoju istog.
WebGL praktički proizlazi iz OpenGL-a te omogućuje slične funkcionalnosti renderiranja, no u HTML kontekstu.
Ključne prednosti
Iz razloga što je baziran na OpenGL-u, a također je integriran u gotovo sve web preglednike, pruža veći broj prednosti, od koji su neke:
- API baziran na poznatom i široko prihvaćenom 3D grafičkom standardu
- cross-browser i cross-platform
- Integracija s HTML sadržajem, interakcija s drugim HTML elementima, kao i standardno HTML upravljanje događajima
- Hardware-accelerated 3D grafika u web pregledniku
Nedostaci
No, s obzirom da je to API niske razine, potrebno je ručno programiranje shadera, a naučili smo se na to da OpenGL za nas sam radi upravo to.
Uz ručno programiranje shadera potrebno je i napraviti određene matrične tranformacije koje reprezentiraju neke transformacije i animacije.
Pregledavanje programskog koda primjera
Što se primjera u ovom radu tiče, svaki primjer sadrži izvorni kod u zasebnoj JavaScript datoteci, tako primjerice Primjer 1 svoj programski kod ima u datoteci primjer01.js.
OpenGL
Grafički 3D standard koji se sastoji od mnoštva funkcija za kreiranje kompleksnih 3D scena s osnovnim geometrijskim elementima.
GLSL
OpenGL Shading Language. Programski jezik temeljen na sintaksi C programskog jezika, a napravljen je zbog toga da developerima ponudi veću kontrolu nad grafičkim cjevovodima.
HTML5 Canvas
Element HTML-a za crtanje grafike koristeći skriptiranje, i to najčešće JavaScript. Canvas element zapravo predstavlja "container" za grafiku, a skriptni programski jezik se koristi za crtanje.