separate map and renderer

This commit is contained in:
Éric Lemoine
2012-08-13 23:38:37 +02:00
parent c7f78caec9
commit 9efa34a2a3
10 changed files with 473 additions and 367 deletions
+8 -6
View File
@@ -76,12 +76,12 @@ goog.addSingletonGetter(ol.webgl.tilelayerrenderer.shader.Vertex);
/**
* @constructor
* @extends {ol.webgl.LayerRenderer}
* @param {ol.webgl.Map} map Map.
* @param {ol.MapRenderer} mapRenderer Map renderer.
* @param {ol.TileLayer} tileLayer Tile layer.
*/
ol.webgl.TileLayerRenderer = function(map, tileLayer) {
ol.webgl.TileLayerRenderer = function(mapRenderer, tileLayer) {
goog.base(this, map, tileLayer);
goog.base(this, mapRenderer, tileLayer);
/**
* @private
@@ -250,8 +250,9 @@ ol.webgl.TileLayerRenderer.prototype.handleWebGLContextLost = function() {
ol.webgl.TileLayerRenderer.prototype.render = function() {
var gl = this.getGL();
var map = this.getMap();
var mapRenderer = this.getMapRenderer();
goog.asserts.assert(map.isDef());
var mapCenter = map.getCenter();
var mapExtent = map.getExtent();
@@ -293,7 +294,8 @@ ol.webgl.TileLayerRenderer.prototype.render = function() {
gl.clear(goog.webgl.COLOR_BUFFER_BIT);
gl.disable(goog.webgl.BLEND);
var program = map.getProgram(this.fragmentShader_, this.vertexShader_);
var program = mapRenderer.getProgram(
this.fragmentShader_, this.vertexShader_);
gl.useProgram(program);
if (goog.isNull(this.locations_)) {
this.locations_ = {
@@ -385,7 +387,7 @@ ol.webgl.TileLayerRenderer.prototype.render = function() {
framebufferExtentSize.height - 1;
goog.vec.Vec4.setFromValues(uTileOffset, sx, sy, tx, ty);
gl.uniform4fv(this.locations_.uTileOffset, uTileOffset);
map.bindImageTexture(
mapRenderer.bindImageTexture(
tile.getImage(), goog.webgl.LINEAR, goog.webgl.LINEAR);
gl.drawArrays(goog.webgl.TRIANGLE_STRIP, 0, 4);
}, this);