diff --git a/src/ol/framestate.js b/src/ol/framestate.js
index 5ab8fdb9a7..e7ebadae9c 100644
--- a/src/ol/framestate.js
+++ b/src/ol/framestate.js
@@ -24,6 +24,7 @@ goog.require('ol.layer.LayerState');
* coordinateToPixelMatrix: goog.vec.Mat4.Number,
* extent: (null|ol.Extent),
* focus: ol.Coordinate,
+ * index: number,
* layersArray: Array.
,
* layerStates: Object.,
* logos: Object.,
diff --git a/src/ol/map.js b/src/ol/map.js
index 70cb4928a4..c551e7317b 100644
--- a/src/ol/map.js
+++ b/src/ol/map.js
@@ -168,6 +168,12 @@ ol.Map = function(options) {
*/
this.pixelToCoordinateMatrix_ = goog.vec.Mat4.createNumber();
+ /**
+ * @private
+ * @type {number}
+ */
+ this.frameIndex_ = 0;
+
/**
* @private
* @type {?ol.FrameState}
@@ -804,6 +810,7 @@ ol.Map.prototype.renderFrame_ = function(time) {
coordinateToPixelMatrix: this.coordinateToPixelMatrix_,
extent: null,
focus: goog.isNull(this.focus_) ? view2DState.center : this.focus_,
+ index: this.frameIndex_++,
layersArray: layersArray,
layerStates: layerStates,
logos: {},
diff --git a/src/ol/renderer/webgl/webglmaprenderer.js b/src/ol/renderer/webgl/webglmaprenderer.js
index 32579a1bcd..25acd5e3a7 100644
--- a/src/ol/renderer/webgl/webglmaprenderer.js
+++ b/src/ol/renderer/webgl/webglmaprenderer.js
@@ -365,7 +365,7 @@ ol.renderer.webgl.Map.prototype.expireCache_ = function(map, frameState) {
textureCacheEntry = /** @type {?ol.renderer.webgl.TextureCacheEntry} */
(this.textureCache_.peekLast());
if (goog.isNull(textureCacheEntry)) {
- if (+this.textureCache_.peekLastKey() == frameState.time) {
+ if (+this.textureCache_.peekLastKey() == frameState.index) {
break;
} else {
--this.textureCacheFrameMarkerCount_;
@@ -521,7 +521,7 @@ ol.renderer.webgl.Map.prototype.renderFrame = function(frameState) {
this.focus_ = frameState.focus;
- this.textureCache_.set(frameState.time.toString(), null);
+ this.textureCache_.set(frameState.index.toString(), null);
++this.textureCacheFrameMarkerCount_;
goog.array.forEach(frameState.layersArray, function(layer) {