# WebGL

WebGL è una libreria grafica per il web (Web-based Graphics Library). È un contesto di HTML che fornisce un'API di grafica 3D per i browser web. Le specifiche sono ancora in costruzione. WebGL è gestito dal Khronos Group, un'organizzazione non profit.

## Panoramica

WebGL si basa su OpenGL ES 2.0 e fornisce un'interfaccia di programmazione per la grafica 3D. Usa l'elemento Canvas HTML5 e vi si accede attraverso le interfacce Document Object Model.

## Librerie di sviluppo

Esistono diverse librerie per lo sviluppo di WebGL. La libreria WebGLU fu la prima disponibile pubblicamente. Altre librerie che includono WebGL sono: Three.js, GLGE, C3DL, Copperlicht, SpiderGL, Pixi.js, SceneJS, Blend4Web, Verge3D, Processing.js e XB PointStream.

### Confronto con CSS3

I CSS3 hanno introdotto la proprietà "3D Transform" che consente di creare alcune animazioni e forme in 3D ma non possono equiparare le possibilità di WebGL.

## Google Chrome Experiments

Google Chrome Experiments è uno showroom online di esperimenti basati su browser web, programmi interattivi e progetti artistici. Lanciato il 1º marzo 2009, Google Chrome Experiments è un sito web ufficiale di Google che originariamente doveva testare i limiti di JavaScript e le prestazioni e le capacità del browser Google Chrome. Con il progredire del progetto, ha assunto il ruolo di mostrare e sperimentare le più recenti tecnologie open source basate sul web, come JavaScript , HTML5, WebGL, Canvas, SVG, CSS e altri. Tutti i progetti vengono inviati dagli utenti e realizzati utilizzando tecnologie open source.
WebGL è una delle tecnologie più comunemente utilizzate sul sito. La tecnologia ha anche guadagnato un uso attivo in app online famose e utili come Google Maps, e Zygote Body (ex Google Body).

## Esempi

* Auto
* Viso umano
* Ingranaggio

## Framework WebGL

Sono disponibili framework per creare contenuti WebGL senza dover costruire la struttura da zero.
Nota: il seguente elenco combina le librerie WebGL con motori di gioco e servizi Cloud senza alcuna distinzione.
| Nome | Scripting | Modellazione | Animazione | Audio integrato | Networking integrato | Fisiche integrate | Cloud | Implementazione WebGL | Importazione | Esportazione | Licenza |
| Wonderland Engine | JavaScript | No | sì | sì | No | No | sì | Nativo (2.0) | .gltf, .glb, .fbx, .obj, .ply, .dae | .wasm, .bin, .html, .js | Proprietario |
| Verge3D | JavaScript | sì | sì | sì | No | sì | sì | Nativo (1.0) | FBX, OBJ, STL | glTF | Proprietario |
| Unity | C # | sì | sì | sì | sì | sì | sì | .NET trasferito in Wasm (1.0 e 2.0) | FBX, OBJ | | Proprietario |
| A-Frame | JavaScript | No | sì | sì | No | No | sì | Nativo (1.0) | OBJ, COLLADA, componenti della comunità per glTF, FBX, three.js | HTML, three.js | Licenza MIT |
| Three.js | JavaScript | No | sì | sì | No | No | sì | Nativo (1.0 e 2.0) | glTF, DRACO, FBX, OBJ, STL, MMD, PRWM, PCD, PDB | OBJ, glTF, PLY, Collada | MIT |
| Sketchfab | JavaScript | No | sì | sì | No | No | No | Nativo (1.0) | .3dc, .3ds, .ac, .abc, .obj, .bvh, .blend, .geo, .dae, .dwf, .dw, .x, .dxf, .fbx, .ogr, .gta, .gltf , .igs, .mu, .craft, .kmz, .las, .lwo, .q3d, .mc2obj, .flt, .iv, .osg, .ply, .bsp, .md2, .mdl, .shp,. stl, .txp, .vpk, .wrl, .vrml | No | Proprietario |
| PlayCanvas | JavaScript | No | sì | sì | sì | sì | sì | Nativo (1.0 e 2.0) | .dae, .dxf, .fbx, .gltf, .glb, .obj | No | MIT (motore), proprietario (editor ospitato su cloud) |
| OSG.JS | JavaScript | No | sì | sì | No | No | sì | Nativo (1.0) | No | No | MIT |
| LayaAir | ActionScript 3.0 , JavaScript , TypeScript | No | sì | sì | sì | No | No | Native, implementa anche canvas2D (1.0) | FBX | No | Open source (motore), proprietario (conversione del modello) |
| Kubity | No | No | No | No | No | sì | sì | .NET traspilato (1.0) | No | No | Proprietario |
| JanusWeb | JavaScript | No | sì | sì | sì | sì | sì | Nativo (1.0) | OBJ, COLLADA, glTF, FBX, STL, PLY, VRML | HTML, XML, JSON | Licenza MIT |
| CopperLicht | JavaScript | No | sì | sì | No | sì | sì | Nativo (1.0) | No | No | Open source basato su zlib |
| Clara.io | JavaScript , API REST | sì | sì | No | No | sì | sì | Nativo (1.0) | OBJ, FBX, Blend, STL, STP | OBJ, FBX, Blend, STL, Babylon.js, Three.js | Freemium o commerciale |
| Babylon.js | JavaScript , TypeScript | No | sì | sì | No | sì | sì | Nativo (1.0 e 2.0) | OBJ, FBX, STL, Babylon, glTF | Tutti i formati supportati da Blender e 3dsMax (esportatori disponibili) | Licenza Apache 2.0 |
| Away3D | Dattiloscritto | No | sì | sì | No | sì | sì | Flash transpiled (1.0) | No | No | Licenza Apache 2.0 |