Change "recreate batch" strategy
Only recreate batch when the (buffered) rendered extent contains the **buffered** viewport extent.
This commit is contained in:
@@ -180,23 +180,24 @@ ol.renderer.canvas.VectorLayer.prototype.prepareFrame =
|
|||||||
var resolution = viewState.resolution;
|
var resolution = viewState.resolution;
|
||||||
var pixelRatio = frameState.pixelRatio;
|
var pixelRatio = frameState.pixelRatio;
|
||||||
var vectorLayerRevision = vectorLayer.getRevision();
|
var vectorLayerRevision = vectorLayer.getRevision();
|
||||||
|
var vectorLayerRenderBuffer = vectorLayer.getRenderBuffer();
|
||||||
var vectorLayerRenderOrder = vectorLayer.getRenderOrder();
|
var vectorLayerRenderOrder = vectorLayer.getRenderOrder();
|
||||||
|
|
||||||
if (!goog.isDef(vectorLayerRenderOrder)) {
|
if (!goog.isDef(vectorLayerRenderOrder)) {
|
||||||
vectorLayerRenderOrder = ol.renderer.vector.defaultOrder;
|
vectorLayerRenderOrder = ol.renderer.vector.defaultOrder;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var extent = ol.extent.buffer(frameStateExtent,
|
||||||
|
vectorLayerRenderBuffer * resolution);
|
||||||
|
|
||||||
if (!this.dirty_ &&
|
if (!this.dirty_ &&
|
||||||
this.renderedResolution_ == resolution &&
|
this.renderedResolution_ == resolution &&
|
||||||
this.renderedRevision_ == vectorLayerRevision &&
|
this.renderedRevision_ == vectorLayerRevision &&
|
||||||
this.renderedRenderOrder_ == vectorLayerRenderOrder &&
|
this.renderedRenderOrder_ == vectorLayerRenderOrder &&
|
||||||
ol.extent.containsExtent(this.renderedExtent_, frameStateExtent)) {
|
ol.extent.containsExtent(this.renderedExtent_, extent)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
var extent = this.renderedExtent_;
|
|
||||||
var renderBuffer = vectorLayer.getRenderBuffer();
|
|
||||||
ol.extent.buffer(frameStateExtent, renderBuffer * resolution, extent);
|
|
||||||
|
|
||||||
// FIXME dispose of old replayGroup in post render
|
// FIXME dispose of old replayGroup in post render
|
||||||
goog.dispose(this.replayGroup_);
|
goog.dispose(this.replayGroup_);
|
||||||
this.replayGroup_ = null;
|
this.replayGroup_ = null;
|
||||||
@@ -247,6 +248,7 @@ ol.renderer.canvas.VectorLayer.prototype.prepareFrame =
|
|||||||
this.renderedResolution_ = resolution;
|
this.renderedResolution_ = resolution;
|
||||||
this.renderedRevision_ = vectorLayerRevision;
|
this.renderedRevision_ = vectorLayerRevision;
|
||||||
this.renderedRenderOrder_ = vectorLayerRenderOrder;
|
this.renderedRenderOrder_ = vectorLayerRenderOrder;
|
||||||
|
this.renderedExtent_ = extent;
|
||||||
this.replayGroup_ = replayGroup;
|
this.replayGroup_ = replayGroup;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -220,23 +220,24 @@ ol.renderer.dom.VectorLayer.prototype.prepareFrame =
|
|||||||
var resolution = viewState.resolution;
|
var resolution = viewState.resolution;
|
||||||
var pixelRatio = frameState.pixelRatio;
|
var pixelRatio = frameState.pixelRatio;
|
||||||
var vectorLayerRevision = vectorLayer.getRevision();
|
var vectorLayerRevision = vectorLayer.getRevision();
|
||||||
|
var vectorLayerRenderBuffer = vectorLayer.getRenderBuffer();
|
||||||
var vectorLayerRenderOrder = vectorLayer.getRenderOrder();
|
var vectorLayerRenderOrder = vectorLayer.getRenderOrder();
|
||||||
|
|
||||||
if (!goog.isDef(vectorLayerRenderOrder)) {
|
if (!goog.isDef(vectorLayerRenderOrder)) {
|
||||||
vectorLayerRenderOrder = ol.renderer.vector.defaultOrder;
|
vectorLayerRenderOrder = ol.renderer.vector.defaultOrder;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var extent = ol.extent.buffer(frameStateExtent,
|
||||||
|
vectorLayerRenderBuffer * resolution);
|
||||||
|
|
||||||
if (!this.dirty_ &&
|
if (!this.dirty_ &&
|
||||||
this.renderedResolution_ == resolution &&
|
this.renderedResolution_ == resolution &&
|
||||||
this.renderedRevision_ == vectorLayerRevision &&
|
this.renderedRevision_ == vectorLayerRevision &&
|
||||||
this.renderedRenderOrder_ == vectorLayerRenderOrder &&
|
this.renderedRenderOrder_ == vectorLayerRenderOrder &&
|
||||||
ol.extent.containsExtent(this.renderedExtent_, frameStateExtent)) {
|
ol.extent.containsExtent(this.renderedExtent_, extent)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
var extent = this.renderedExtent_;
|
|
||||||
var renderBuffer = vectorLayer.getRenderBuffer();
|
|
||||||
ol.extent.buffer(frameStateExtent, renderBuffer * resolution, extent);
|
|
||||||
|
|
||||||
// FIXME dispose of old replayGroup in post render
|
// FIXME dispose of old replayGroup in post render
|
||||||
goog.dispose(this.replayGroup_);
|
goog.dispose(this.replayGroup_);
|
||||||
this.replayGroup_ = null;
|
this.replayGroup_ = null;
|
||||||
@@ -287,6 +288,7 @@ ol.renderer.dom.VectorLayer.prototype.prepareFrame =
|
|||||||
this.renderedResolution_ = resolution;
|
this.renderedResolution_ = resolution;
|
||||||
this.renderedRevision_ = vectorLayerRevision;
|
this.renderedRevision_ = vectorLayerRevision;
|
||||||
this.renderedRenderOrder_ = vectorLayerRenderOrder;
|
this.renderedRenderOrder_ = vectorLayerRenderOrder;
|
||||||
|
this.renderedExtent_ = extent;
|
||||||
this.replayGroup_ = replayGroup;
|
this.replayGroup_ = replayGroup;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -139,23 +139,24 @@ ol.renderer.webgl.VectorLayer.prototype.prepareFrame =
|
|||||||
var resolution = viewState.resolution;
|
var resolution = viewState.resolution;
|
||||||
var pixelRatio = frameState.pixelRatio;
|
var pixelRatio = frameState.pixelRatio;
|
||||||
var vectorLayerRevision = vectorLayer.getRevision();
|
var vectorLayerRevision = vectorLayer.getRevision();
|
||||||
|
var vectorLayerRenderBuffer = vectorLayer.getRenderBuffer();
|
||||||
var vectorLayerRenderOrder = vectorLayer.getRenderOrder();
|
var vectorLayerRenderOrder = vectorLayer.getRenderOrder();
|
||||||
|
|
||||||
if (!goog.isDef(vectorLayerRenderOrder)) {
|
if (!goog.isDef(vectorLayerRenderOrder)) {
|
||||||
vectorLayerRenderOrder = ol.renderer.vector.defaultOrder;
|
vectorLayerRenderOrder = ol.renderer.vector.defaultOrder;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var extent = ol.extent.buffer(frameStateExtent,
|
||||||
|
vectorLayerRenderBuffer * resolution);
|
||||||
|
|
||||||
if (!this.dirty_ &&
|
if (!this.dirty_ &&
|
||||||
this.renderedResolution_ == resolution &&
|
this.renderedResolution_ == resolution &&
|
||||||
this.renderedRevision_ == vectorLayerRevision &&
|
this.renderedRevision_ == vectorLayerRevision &&
|
||||||
this.renderedRenderOrder_ == vectorLayerRenderOrder &&
|
this.renderedRenderOrder_ == vectorLayerRenderOrder &&
|
||||||
ol.extent.containsExtent(this.renderedExtent_, frameStateExtent)) {
|
ol.extent.containsExtent(this.renderedExtent_, extent)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
var extent = this.renderedExtent_;
|
|
||||||
var renderBuffer = vectorLayer.getRenderBuffer();
|
|
||||||
ol.extent.buffer(frameStateExtent, renderBuffer * resolution, extent);
|
|
||||||
|
|
||||||
if (!goog.isNull(this.replayGroup_)) {
|
if (!goog.isNull(this.replayGroup_)) {
|
||||||
frameState.postRenderFunctions.push(
|
frameState.postRenderFunctions.push(
|
||||||
this.replayGroup_.getDeleteResourcesFunction(context));
|
this.replayGroup_.getDeleteResourcesFunction(context));
|
||||||
@@ -206,6 +207,7 @@ ol.renderer.webgl.VectorLayer.prototype.prepareFrame =
|
|||||||
this.renderedResolution_ = resolution;
|
this.renderedResolution_ = resolution;
|
||||||
this.renderedRevision_ = vectorLayerRevision;
|
this.renderedRevision_ = vectorLayerRevision;
|
||||||
this.renderedRenderOrder_ = vectorLayerRenderOrder;
|
this.renderedRenderOrder_ = vectorLayerRenderOrder;
|
||||||
|
this.renderedExtent_ = extent;
|
||||||
this.replayGroup_ = replayGroup;
|
this.replayGroup_ = replayGroup;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
Reference in New Issue
Block a user