Use for loop instead of forEach in WebGL tile layer renderer

This commit is contained in:
Tom Payne
2013-04-19 20:41:54 +02:00
parent f5611d6cd6
commit d964bbc605

View File

@@ -236,23 +236,24 @@ ol.renderer.webgl.TileLayer.prototype.renderFrame =
var zs = goog.array.map(goog.object.getKeys(tilesToDrawByZ), Number); var zs = goog.array.map(goog.object.getKeys(tilesToDrawByZ), Number);
goog.array.sort(zs); goog.array.sort(zs);
var u_tileOffset = goog.vec.Vec4.createFloat32(); var u_tileOffset = goog.vec.Vec4.createFloat32();
goog.array.forEach(zs, function(z) { var i, sx, sy, tileExtent, tileKey, tilesToDraw, tx, ty;
goog.object.forEach(tilesToDrawByZ[z], function(tile) { for (i = 0; i < zs.length; ++i) {
var tileExtent = tileGrid.getTileCoordExtent(tile.tileCoord, tmpExtent); tilesToDraw = tilesToDrawByZ[zs[i]];
var sx = for (tileKey in tilesToDraw) {
2 * (tileExtent[1] - tileExtent[0]) / framebufferExtentSize.width; tile = tilesToDraw[tileKey];
var sy = tileExtent = tileGrid.getTileCoordExtent(tile.tileCoord, tmpExtent);
2 * (tileExtent[3] - tileExtent[2]) / framebufferExtentSize.height; sx = 2 * (tileExtent[1] - tileExtent[0]) / framebufferExtentSize.width;
var tx = 2 * (tileExtent[0] - framebufferExtent[0]) / sy = 2 * (tileExtent[3] - tileExtent[2]) / framebufferExtentSize.height;
tx = 2 * (tileExtent[0] - framebufferExtent[0]) /
framebufferExtentSize.width - 1; framebufferExtentSize.width - 1;
var ty = 2 * (tileExtent[2] - framebufferExtent[2]) / ty = 2 * (tileExtent[2] - framebufferExtent[2]) /
framebufferExtentSize.height - 1; framebufferExtentSize.height - 1;
goog.vec.Vec4.setFromValues(u_tileOffset, sx, sy, tx, ty); goog.vec.Vec4.setFromValues(u_tileOffset, sx, sy, tx, ty);
gl.uniform4fv(this.locations_.u_tileOffset, u_tileOffset); gl.uniform4fv(this.locations_.u_tileOffset, u_tileOffset);
mapRenderer.bindTileTexture(tile, goog.webgl.LINEAR, goog.webgl.LINEAR); mapRenderer.bindTileTexture(tile, goog.webgl.LINEAR, goog.webgl.LINEAR);
gl.drawArrays(goog.webgl.TRIANGLE_STRIP, 0, 4); gl.drawArrays(goog.webgl.TRIANGLE_STRIP, 0, 4);
}, this); }
}, this); }
if (allTilesLoaded) { if (allTilesLoaded) {
this.renderedTileRange_ = tileRange; this.renderedTileRange_ = tileRange;