Use for loop instead of forEach in WebGL tile layer renderer
This commit is contained in:
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user