diff --git a/src/core/renderers/webgl/WebGLRenderer.js b/src/core/renderers/webgl/WebGLRenderer.js index 33439a6..fd49dab 100644 --- a/src/core/renderers/webgl/WebGLRenderer.js +++ b/src/core/renderers/webgl/WebGLRenderer.js @@ -310,6 +310,7 @@ } this.currentRenderer.stop(); + this.currentRenderer.destroy(); this.currentRenderer = objectRenderer; this.currentRenderer.start(); }; @@ -480,11 +481,13 @@ this.maskManager.destroy(); this.stencilManager.destroy(); this.filterManager.destroy(); + this.blendModeManager.destroy(); this.shaderManager = null; this.maskManager = null; this.filterManager = null; this.blendModeManager = null; + this.currentRenderer = null; this.handleContextLost = null; this.handleContextRestored = null; diff --git a/src/core/renderers/webgl/WebGLRenderer.js b/src/core/renderers/webgl/WebGLRenderer.js index 33439a6..fd49dab 100644 --- a/src/core/renderers/webgl/WebGLRenderer.js +++ b/src/core/renderers/webgl/WebGLRenderer.js @@ -310,6 +310,7 @@ } this.currentRenderer.stop(); + this.currentRenderer.destroy(); this.currentRenderer = objectRenderer; this.currentRenderer.start(); }; @@ -480,11 +481,13 @@ this.maskManager.destroy(); this.stencilManager.destroy(); this.filterManager.destroy(); + this.blendModeManager.destroy(); this.shaderManager = null; this.maskManager = null; this.filterManager = null; this.blendModeManager = null; + this.currentRenderer = null; this.handleContextLost = null; this.handleContextRestored = null; diff --git a/src/core/renderers/webgl/managers/FilterManager.js b/src/core/renderers/webgl/managers/FilterManager.js index a8d6f7a..de0d3e6 100644 --- a/src/core/renderers/webgl/managers/FilterManager.js +++ b/src/core/renderers/webgl/managers/FilterManager.js @@ -421,6 +421,8 @@ */ FilterManager.prototype.destroy = function () { + WebGLManager.prototype.destroy.call(this); + this.filterStack = null; this.offsetY = 0; diff --git a/src/core/renderers/webgl/WebGLRenderer.js b/src/core/renderers/webgl/WebGLRenderer.js index 33439a6..fd49dab 100644 --- a/src/core/renderers/webgl/WebGLRenderer.js +++ b/src/core/renderers/webgl/WebGLRenderer.js @@ -310,6 +310,7 @@ } this.currentRenderer.stop(); + this.currentRenderer.destroy(); this.currentRenderer = objectRenderer; this.currentRenderer.start(); }; @@ -480,11 +481,13 @@ this.maskManager.destroy(); this.stencilManager.destroy(); this.filterManager.destroy(); + this.blendModeManager.destroy(); this.shaderManager = null; this.maskManager = null; this.filterManager = null; this.blendModeManager = null; + this.currentRenderer = null; this.handleContextLost = null; this.handleContextRestored = null; diff --git a/src/core/renderers/webgl/managers/FilterManager.js b/src/core/renderers/webgl/managers/FilterManager.js index a8d6f7a..de0d3e6 100644 --- a/src/core/renderers/webgl/managers/FilterManager.js +++ b/src/core/renderers/webgl/managers/FilterManager.js @@ -421,6 +421,8 @@ */ FilterManager.prototype.destroy = function () { + WebGLManager.prototype.destroy.call(this); + this.filterStack = null; this.offsetY = 0; diff --git a/src/core/sprites/webgl/SpriteRenderer.js b/src/core/sprites/webgl/SpriteRenderer.js index ec3c2e0..740173f 100644 --- a/src/core/sprites/webgl/SpriteRenderer.js +++ b/src/core/sprites/webgl/SpriteRenderer.js @@ -446,6 +446,8 @@ */ SpriteRenderer.prototype.destroy = function () { + ObjectRenderer.prototype.destroy.call(this); + this.renderer.gl.deleteBuffer(this.vertexBuffer); this.renderer.gl.deleteBuffer(this.indexBuffer); diff --git a/src/core/renderers/webgl/WebGLRenderer.js b/src/core/renderers/webgl/WebGLRenderer.js index 33439a6..fd49dab 100644 --- a/src/core/renderers/webgl/WebGLRenderer.js +++ b/src/core/renderers/webgl/WebGLRenderer.js @@ -310,6 +310,7 @@ } this.currentRenderer.stop(); + this.currentRenderer.destroy(); this.currentRenderer = objectRenderer; this.currentRenderer.start(); }; @@ -480,11 +481,13 @@ this.maskManager.destroy(); this.stencilManager.destroy(); this.filterManager.destroy(); + this.blendModeManager.destroy(); this.shaderManager = null; this.maskManager = null; this.filterManager = null; this.blendModeManager = null; + this.currentRenderer = null; this.handleContextLost = null; this.handleContextRestored = null; diff --git a/src/core/renderers/webgl/managers/FilterManager.js b/src/core/renderers/webgl/managers/FilterManager.js index a8d6f7a..de0d3e6 100644 --- a/src/core/renderers/webgl/managers/FilterManager.js +++ b/src/core/renderers/webgl/managers/FilterManager.js @@ -421,6 +421,8 @@ */ FilterManager.prototype.destroy = function () { + WebGLManager.prototype.destroy.call(this); + this.filterStack = null; this.offsetY = 0; diff --git a/src/core/sprites/webgl/SpriteRenderer.js b/src/core/sprites/webgl/SpriteRenderer.js index ec3c2e0..740173f 100644 --- a/src/core/sprites/webgl/SpriteRenderer.js +++ b/src/core/sprites/webgl/SpriteRenderer.js @@ -446,6 +446,8 @@ */ SpriteRenderer.prototype.destroy = function () { + ObjectRenderer.prototype.destroy.call(this); + this.renderer.gl.deleteBuffer(this.vertexBuffer); this.renderer.gl.deleteBuffer(this.indexBuffer); diff --git a/src/core/textures/Texture.js b/src/core/textures/Texture.js index 2738486..acf79c0 100644 --- a/src/core/textures/Texture.js +++ b/src/core/textures/Texture.js @@ -261,6 +261,9 @@ this.crop = null; this.valid = false; + + this.off('dispose', this.dispose, this); + this.off('update', this.update, this); }; Texture.prototype.clone = function () diff --git a/src/core/renderers/webgl/WebGLRenderer.js b/src/core/renderers/webgl/WebGLRenderer.js index 33439a6..fd49dab 100644 --- a/src/core/renderers/webgl/WebGLRenderer.js +++ b/src/core/renderers/webgl/WebGLRenderer.js @@ -310,6 +310,7 @@ } this.currentRenderer.stop(); + this.currentRenderer.destroy(); this.currentRenderer = objectRenderer; this.currentRenderer.start(); }; @@ -480,11 +481,13 @@ this.maskManager.destroy(); this.stencilManager.destroy(); this.filterManager.destroy(); + this.blendModeManager.destroy(); this.shaderManager = null; this.maskManager = null; this.filterManager = null; this.blendModeManager = null; + this.currentRenderer = null; this.handleContextLost = null; this.handleContextRestored = null; diff --git a/src/core/renderers/webgl/managers/FilterManager.js b/src/core/renderers/webgl/managers/FilterManager.js index a8d6f7a..de0d3e6 100644 --- a/src/core/renderers/webgl/managers/FilterManager.js +++ b/src/core/renderers/webgl/managers/FilterManager.js @@ -421,6 +421,8 @@ */ FilterManager.prototype.destroy = function () { + WebGLManager.prototype.destroy.call(this); + this.filterStack = null; this.offsetY = 0; diff --git a/src/core/sprites/webgl/SpriteRenderer.js b/src/core/sprites/webgl/SpriteRenderer.js index ec3c2e0..740173f 100644 --- a/src/core/sprites/webgl/SpriteRenderer.js +++ b/src/core/sprites/webgl/SpriteRenderer.js @@ -446,6 +446,8 @@ */ SpriteRenderer.prototype.destroy = function () { + ObjectRenderer.prototype.destroy.call(this); + this.renderer.gl.deleteBuffer(this.vertexBuffer); this.renderer.gl.deleteBuffer(this.indexBuffer); diff --git a/src/core/textures/Texture.js b/src/core/textures/Texture.js index 2738486..acf79c0 100644 --- a/src/core/textures/Texture.js +++ b/src/core/textures/Texture.js @@ -261,6 +261,9 @@ this.crop = null; this.valid = false; + + this.off('dispose', this.dispose, this); + this.off('update', this.update, this); }; Texture.prototype.clone = function () diff --git a/src/mesh/webgl/MeshRenderer.js b/src/mesh/webgl/MeshRenderer.js index a5a8e44..152d239 100644 --- a/src/mesh/webgl/MeshRenderer.js +++ b/src/mesh/webgl/MeshRenderer.js @@ -209,4 +209,7 @@ */ MeshRenderer.prototype.destroy = function () { + if (this.renderer) { + ObjectRenderer.prototype.destroy.call(this); + } };