Factor out layersToDraw

This commit is contained in:
Tom Payne
2013-10-31 19:35:34 +01:00
parent d7591331ba
commit b403c25646
+13 -11
View File
@@ -379,21 +379,28 @@ 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_;
var layersToDraw = [];
var layersArray = frameState.layersArray; var layersArray = frameState.layersArray;
var viewResolution = frameState.view2DState.resolution; var viewResolution = frameState.view2DState.resolution;
var i, ii, layer, layerRenderer, layerState; var i, ii, layer, layerRenderer, layerState;
for (i = 0, ii = layersArray.length; i < ii; ++i) { for (i = 0, ii = layersArray.length; i < ii; ++i) {
layer = layersArray[i]; layer = layersArray[i];
layerRenderer = this.getLayerRenderer(layer);
layerState = frameState.layerStates[goog.getUid(layer)]; layerState = frameState.layerStates[goog.getUid(layer)];
if (layerState.visible && if (layerState.visible &&
layerState.sourceState == ol.source.State.READY && layerState.sourceState == ol.source.State.READY &&
viewResolution < layerState.maxResolution && viewResolution < layerState.maxResolution &&
viewResolution >= layerState.minResolution) { viewResolution >= layerState.minResolution) {
layerRenderer.prepareFrame(frameState, layerState); layersToDraw.push(layer);
} }
} }
for (i = 0, ii = layersToDraw.length; i < ii; ++i) {
layer = layersToDraw[i];
layerRenderer = this.getLayerRenderer(layer);
layerState = frameState.layerStates[goog.getUid(layer)];
layerRenderer.prepareFrame(frameState, layerState);
}
var size = frameState.size; var size = frameState.size;
if (this.canvas_.width != size[0] || this.canvas_.height != size[1]) { if (this.canvas_.width != size[0] || this.canvas_.height != size[1]) {
this.canvas_.width = size[0]; this.canvas_.width = size[0];
@@ -409,16 +416,11 @@ ol.renderer.webgl.Map.prototype.renderFrame = function(frameState) {
context.bindBuffer(goog.webgl.ARRAY_BUFFER, this.arrayBuffer_); context.bindBuffer(goog.webgl.ARRAY_BUFFER, this.arrayBuffer_);
for (i = 0, ii = layersArray.length; i < ii; ++i) { for (i = 0, ii = layersToDraw.length; i < ii; ++i) {
layer = layersArray[i]; layer = layersToDraw[i];
layerState = frameState.layerStates[goog.getUid(layer)]; layerState = frameState.layerStates[goog.getUid(layer)];
if (layerState.visible && layerRenderer = this.getLayerRenderer(layer);
layerState.sourceState == ol.source.State.READY && layerRenderer.composeFrame(frameState, layerState, context);
viewResolution < layerState.maxResolution &&
viewResolution >= layerState.minResolution) {
layerRenderer = this.getLayerRenderer(layer);
layerRenderer.composeFrame(frameState, layerState, context);
}
} }
if (!this.renderedVisible_) { if (!this.renderedVisible_) {