The encyclopedia · Software & IT · Technical decision · 2011
WebGL put OpenGL-class 3D in browsers without plugins and became the standard
Khronos made WebGL a royalty-free JavaScript binding to OpenGL ES 2.0; four browsers shipped it in 2011.
Khronos Group · Apple · Google · Mozilla · Opera
the move
In 2011, rich 3D on the web meant plugins: Flash and proprietary engines, each with its own install friction and security baggage. On March 3, 2011, the Khronos Group released the final WebGL 1.0 specification, defining a JavaScript binding to OpenGL ES 2.0 so browsers could do hardware-accelerated 3D with no plugin at all.
The design reused the API that already ran on almost every browser-capable device — OpenGL ES 2.0 — and the spec was royalty-free. Apple, Google, Mozilla and Opera all shipped implementations at once: Firefox 4 beta, all channels of Chrome 9, an Opera preview build and Safari nightly builds, with a free conformance test suite from Khronos.
A middleware ecosystem formed immediately — Three.js, SceneJS, SpiderGL and others — so developers could build 3D without writing raw GL. Facebook publicly urged browsers to 'Implement WebGL!', and while Microsoft held back for IE9, the plugin-free standard had already won the developer community that mattered.
why it works
- Binding to OpenGL ES 2.0 meant GPU support already existed on nearly every device.
- Royalty-free licensing let every browser vendor ship it without negotiation.
- Shipping in four browsers at once gave developers one target instead of fragmented plugins.
- Free conformance tests made 'WebGL-compliant' a meaningful label.
what transfers
The fastest route to a new platform standard is binding to one that already won: reuse the installed API, remove the plugin, and ship in every browser at once.
what came after
WebGL became the foundation of browser 3D; libraries like Three.js built on it for games, maps and interfaces, and the specification remains the baseline for graphics on the web, later extended by WebGL 2 and WebGPU as the platform evolved.
references
spotted an error? The archive wants to know.