openlayers/ol3 — pull request #418 by twpayne (2013-03-22 17:05:56+00:00)
Title: WebGL core improvements

This PR includes a number of data structures, clean-ups and improvements developed while working on the WebGL vector data renderer. It does not touch any vector code itself.

The bullet points are:

* a new data structure, `ol.structs.IntegerSet` for representing sets of integers as an packed array of ranges
* a new data structure `ol.structs.Buffer` for representing arrays of numbers with in-buffer memory management and the ability for multiple users to independently track which elements have been updated
* WebGL buffer management and optimized GPU uploads using `ol.structs.Buffer`
* the ability for `ol.Rectangle` to represent empty rectangles
* empty `ol.Extent`s and a new `ol.Extent.prototype.extendXY` function that allows an extent to be extended without creating a new temporary object
* promotion of common WebGL layer functionality (intermediate framebuffer, texture, and common matrices) into the `ol.renderer.webgl.Layer` base class
* miscellaneous clean-ups

I'd very much appreciate a fairly swift review of this code, as the WebGL vector research that I'm doing depends on this code, and it's much easier to base the work on `master` than on a separate branch.