WebGL-2D
HTML5 Canvas2D API in WebGL.
Authors:
- Corban Brook @corban
- Bobby Richter @secretrobotron
- Charles J. Cliffe @ccliffe
This project aims to be a complete port of the Canvas2D API implemented in a WebGL context. WebGL-2D is a proof of concept and attempts to ascertain performance improvements over Canvas2D.
It should allow most Canvas2D applications to be switched to a WebGL context.
Check out a LIVE DEMO!
Usage
Switching your Canvas2D sketch to a WebGL2D is very simple and only requires one additional line of code:
var cvs = document.getElementById("myCanvas");
WebGL2D.enable(cvs); // adds "webgl-2d" context to cvs
var ctx = cvs.getContext("webgl-2d"); // easily switch between "webgl-2d" and "2d" contexts
Supported Canvas2D Features
WebGL-2D is a work in progress and currently supports a very small subset of the Canvas2D API.
- strokeStyle
- fillStyle
- strokeRect
- fillRect
- translate
- rotate
- scale
- save
- restore
- lineWidth
- drawImage
- createImageData
- getImageData
- putImageData
- beginPath
- closePath
- moveTo
- lineTo
- rect
- fill*
- stroke*
*fill and stroke only work on straight line paths supported above, arc, and curves are not yet supported.
All other properties or functions are currently stubbed. Properties are set to their defaults and functions are empty.
Benchmarks
WebGL-2D should be faster than Canvas2D at certain things and slower at others. It is important that you know what to expect when using WebGL-2D with your project.
The benchmarks directory contains benchmarks for testing performance
asteroidsbench/
Kevin Roast has graciously given permission to include this benchmark in the WebGL-2D project.
This benchmark is perfect for testing real world canvas usage in game engine. It relies heavily on 9 arg drawImage cropping to implement scrolling backgrounds and stripstrip animations.
Visit his website for other HTML5 canvas demos as well as the asteroids game