corbanbrook/webgl-2d — pull request #1 by kevingadd (2012-04-13 21:18:13+00:00)
Title: Implement globalCompositeOperation/globalAlpha; don't fail when WebGL is unavailable; use premultiplied alpha

As we discussed earlier, here's a pull request with the changes I made to webgl-2d for my own uses. I tested it out in my samples and it works great, but there might be a bug or two hiding in there since I stripped out some custom stuff I added for my own uses.

A summary of the stuff I changed:

Asking for a webgl-2d context will return a normal 2d context if WebGL is unavailable. You can detect this by checking the result context for 'isWebGL'. This simplifies integrating webgl-2d.

globalCompositeOperation works for 'copy', 'source-over' and 'lighter'. Other blend modes will log a warning.

globalAlpha works.

If drawImage is passed a canvas instead of an image, it uses a fast path to call getImageData directly on the canvas.

You can invalidate the cached texture for an image/canvas by setting 'isDirty=true' on the source image/canvas.

Premultiplied alpha is now used for textures. This makes Texture creation slower, but eliminates color bleeding/ringing artifacts when scaling images, and makes the 'lighter' blend mode render more accurately.