Use for loop instead of forEach in WebGL map renderer

This commit is contained in:
Tom Payne
2013-04-19 20:29:24 +02:00
parent 388e530420
commit f5611d6cd6
+13 -8
View File
@@ -524,13 +524,17 @@ ol.renderer.webgl.Map.prototype.renderFrame = function(frameState) {
this.textureCache_.set(frameState.index.toString(), null); this.textureCache_.set(frameState.index.toString(), null);
++this.textureCacheFrameMarkerCount_; ++this.textureCacheFrameMarkerCount_;
goog.array.forEach(frameState.layersArray, function(layer) { var layerStates = frameState.layerStates;
var layerRenderer = this.getLayerRenderer(layer); var layersArray = frameState.layersArray;
var layerState = frameState.layerStates[goog.getUid(layer)]; var i, layer, layerRenderer, layerState;
for (i = 0; i < layersArray.length; ++i) {
layer = layersArray[i];
layerRenderer = this.getLayerRenderer(layer);
layerState = frameState.layerStates[goog.getUid(layer)];
if (layerState.visible && layerState.ready) { if (layerState.visible && layerState.ready) {
layerRenderer.renderFrame(frameState, layerState); layerRenderer.renderFrame(frameState, layerState);
} }
}, this); }
var size = frameState.size; var size = frameState.size;
if (!this.canvasSize_.equals(size)) { if (!this.canvasSize_.equals(size)) {
@@ -552,9 +556,10 @@ ol.renderer.webgl.Map.prototype.renderFrame = function(frameState) {
var currentProgram = null; var currentProgram = null;
var locations; var locations;
goog.array.forEach(frameState.layersArray, function(layer) { for (i = 0; i < layersArray.length; ++i) {
var layerState = frameState.layerStates[goog.getUid(layer)]; layer = layersArray[i];
layerState = frameState.layerStates[goog.getUid(layer)];
if (!layerState.visible || !layerState.ready) { if (!layerState.visible || !layerState.ready) {
return; return;
} }
@@ -608,7 +613,7 @@ ol.renderer.webgl.Map.prototype.renderFrame = function(frameState) {
} }
var layerRenderer = this.getLayerRenderer(layer); layerRenderer = this.getLayerRenderer(layer);
gl.uniformMatrix4fv( gl.uniformMatrix4fv(
locations.u_texCoordMatrix, false, layerRenderer.getTexCoordMatrix()); locations.u_texCoordMatrix, false, layerRenderer.getTexCoordMatrix());
gl.uniformMatrix4fv(locations.u_projectionMatrix, false, gl.uniformMatrix4fv(locations.u_projectionMatrix, false,
@@ -621,7 +626,7 @@ ol.renderer.webgl.Map.prototype.renderFrame = function(frameState) {
gl.bindTexture(goog.webgl.TEXTURE_2D, layerRenderer.getTexture()); gl.bindTexture(goog.webgl.TEXTURE_2D, layerRenderer.getTexture());
gl.drawArrays(goog.webgl.TRIANGLE_STRIP, 0, 4); gl.drawArrays(goog.webgl.TRIANGLE_STRIP, 0, 4);
}, this); }
if (!this.renderedVisible_) { if (!this.renderedVisible_) {
goog.style.showElement(this.canvas_, true); goog.style.showElement(this.canvas_, true);