From 857a8ca2bb28c3fbd0936eb330fa57db53e65de8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Lemoine?= Date: Fri, 21 Nov 2014 16:04:04 +0100 Subject: [PATCH 1/3] Delete WebGL resources used at postcompose time --- src/ol/renderer/webgl/webglmaprenderer.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/ol/renderer/webgl/webglmaprenderer.js b/src/ol/renderer/webgl/webglmaprenderer.js index a5c6485b42..b7d6530670 100644 --- a/src/ol/renderer/webgl/webglmaprenderer.js +++ b/src/ol/renderer/webgl/webglmaprenderer.js @@ -302,6 +302,7 @@ ol.renderer.webgl.Map.prototype.dispatchComposeEvent_ = replayGroup.replay(context, center, resolution, rotation, size, extent, pixelRatio, opacity, brightness, contrast, hue, saturation, {}); } + replayGroup.getDeleteResourcesFunction(context)(); vectorContext.flush(); this.replayGroup = replayGroup; From b3369cd51699c47de7951082b59f7ea921cd9c2b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Lemoine?= Date: Fri, 21 Nov 2014 16:09:46 +0100 Subject: [PATCH 2/3] Delete WebGL resources used by immediate API --- src/ol/render/webgl/webglimmediate.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/ol/render/webgl/webglimmediate.js b/src/ol/render/webgl/webglimmediate.js index 483c341c35..37b8a37e19 100644 --- a/src/ol/render/webgl/webglimmediate.js +++ b/src/ol/render/webgl/webglimmediate.js @@ -171,11 +171,12 @@ ol.render.webgl.Immediate.prototype.drawGeometryCollectionGeometry = */ ol.render.webgl.Immediate.prototype.drawPointGeometry = function(pointGeometry, data) { + var context = this.context_; var replayGroup = new ol.render.webgl.ReplayGroup(1, this.extent_); var replay = replayGroup.getReplay(0, ol.render.ReplayType.IMAGE); replay.setImageStyle(this.imageStyle_); replay.drawPointGeometry(pointGeometry, data); - replay.finish(this.context_); + replay.finish(context); // default colors var opacity = 1; var brightness = 0; @@ -185,6 +186,7 @@ ol.render.webgl.Immediate.prototype.drawPointGeometry = replay.replay(this.context_, this.center_, this.resolution_, this.rotation_, this.size_, this.extent_, this.pixelRatio_, opacity, brightness, contrast, hue, saturation, {}); + replay.getDeleteResourcesFunction(context)(); }; @@ -212,11 +214,12 @@ ol.render.webgl.Immediate.prototype.drawMultiLineStringGeometry = */ ol.render.webgl.Immediate.prototype.drawMultiPointGeometry = function(multiPointGeometry, data) { + var context = this.context_; var replayGroup = new ol.render.webgl.ReplayGroup(1, this.extent_); var replay = replayGroup.getReplay(0, ol.render.ReplayType.IMAGE); replay.setImageStyle(this.imageStyle_); replay.drawMultiPointGeometry(multiPointGeometry, data); - replay.finish(this.context_); + replay.finish(context); // default colors var opacity = 1; var brightness = 0; @@ -226,6 +229,7 @@ ol.render.webgl.Immediate.prototype.drawMultiPointGeometry = replay.replay(this.context_, this.center_, this.resolution_, this.rotation_, this.size_, this.extent_, this.pixelRatio_, opacity, brightness, contrast, hue, saturation, {}); + replay.getDeleteResourcesFunction(context)(); }; From c0bbb6c4fae826ae68d8f2b281883376c22ea4b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Lemoine?= Date: Fri, 21 Nov 2014 17:48:58 +0100 Subject: [PATCH 3/3] Disable vertex attrib array after replay --- src/ol/render/webgl/webglreplay.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/ol/render/webgl/webglreplay.js b/src/ol/render/webgl/webglreplay.js index 766f734d55..a2263934ca 100644 --- a/src/ol/render/webgl/webglreplay.js +++ b/src/ol/render/webgl/webglreplay.js @@ -638,6 +638,13 @@ ol.render.webgl.ImageReplay.prototype.replay = function(context, gl.drawElements(goog.webgl.TRIANGLES, numItems, elementType, offsetInBytes); start = end; } + + // disable the vertex attrib arrays + gl.disableVertexAttribArray(locations.a_position); + gl.disableVertexAttribArray(locations.a_offsets); + gl.disableVertexAttribArray(locations.a_texCoord); + gl.disableVertexAttribArray(locations.a_opacity); + gl.disableVertexAttribArray(locations.a_rotateWithView); };