Provide layer states array in frame state

This commit is contained in:
Tim Schaub
2014-04-03 11:46:17 -06:00
parent 9d5451b1d6
commit aa3a20e911
5 changed files with 28 additions and 26 deletions

View File

@@ -441,27 +441,26 @@ ol.renderer.webgl.Map.prototype.renderFrame = function(frameState) {
this.textureCache_.set((-frameState.index).toString(), null);
++this.textureCacheFrameMarkerCount_;
/** @type {Array.<ol.layer.Layer>} */
var layersToDraw = [];
var layersArray = frameState.layersArray;
/** @type {Array.<ol.layer.LayerState>} */
var layerStatesToDraw = [];
var layerStatesArray = frameState.layerStatesArray;
var viewResolution = frameState.view2DState.resolution;
var i, ii, layer, layerRenderer, layerState;
for (i = 0, ii = layersArray.length; i < ii; ++i) {
layer = layersArray[i];
layerState = frameState.layerStates[goog.getUid(layer)];
var i, ii, layerState;
for (i = 0, ii = layerStatesArray.length; i < ii; ++i) {
layerState = layerStatesArray[i];
if (layerState.visible &&
layerState.sourceState == ol.source.State.READY &&
viewResolution < layerState.maxResolution &&
viewResolution >= layerState.minResolution) {
layersToDraw.push(layer);
layerStatesToDraw.push(layerState);
}
}
for (i = 0, ii = layersToDraw.length; i < ii; ++i) {
layer = layersToDraw[i];
layerRenderer = this.getLayerRenderer(layer);
var layerRenderer;
for (i = 0, ii = layerStatesToDraw.length; i < ii; ++i) {
layerState = layerStatesToDraw[i];
layerRenderer = this.getLayerRenderer(layerState.layer);
goog.asserts.assertInstanceof(layerRenderer, ol.renderer.webgl.Layer);
layerState = frameState.layerStates[goog.getUid(layer)];
layerRenderer.prepareFrame(frameState, layerState);
}
@@ -481,10 +480,9 @@ ol.renderer.webgl.Map.prototype.renderFrame = function(frameState) {
this.dispatchComposeEvent_(ol.render.EventType.PRECOMPOSE, frameState);
for (i = 0, ii = layersToDraw.length; i < ii; ++i) {
layer = layersToDraw[i];
layerState = frameState.layerStates[goog.getUid(layer)];
layerRenderer = this.getLayerRenderer(layer);
for (i = 0, ii = layerStatesToDraw.length; i < ii; ++i) {
layerState = layerStatesToDraw[i];
layerRenderer = this.getLayerRenderer(layerState.layer);
goog.asserts.assertInstanceof(layerRenderer, ol.renderer.webgl.Layer);
layerRenderer.composeFrame(frameState, layerState, context);
}