فهرست منبع

Adding dispose method to a couple of effects to allow for applications to clean them up easily.

MiiBond 12 سال پیش
والد
کامیت
23a9613d72
2فایلهای تغییر یافته به همراه17 افزوده شده و 0 حذف شده
  1. 7 0
      examples/js/effects/AnaglyphEffect.js
  2. 10 0
      examples/js/effects/OculusRiftEffect.js

+ 7 - 0
examples/js/effects/AnaglyphEffect.js

@@ -80,6 +80,8 @@ THREE.AnaglyphEffect = function ( renderer, width, height ) {
 
 	this.setSize = function ( width, height ) {
 
+		if ( _renderTargetL ) _renderTargetL.dispose();
+		if ( _renderTargetR ) _renderTargetR.dispose();
 		_renderTargetL = new THREE.WebGLRenderTarget( width, height, _params );
 		_renderTargetR = new THREE.WebGLRenderTarget( width, height, _params );
 
@@ -165,4 +167,9 @@ THREE.AnaglyphEffect = function ( renderer, width, height ) {
 
 	};
 
+	this.dispose = function() {
+		if ( _renderTargetL ) _renderTargetL.dispose();
+		if ( _renderTargetR ) _renderTargetR.dispose();
+	}
+
 };

+ 10 - 0
examples/js/effects/OculusRiftEffect.js

@@ -136,6 +136,7 @@ THREE.OculusRiftEffect = function ( renderer, options ) {
 		RTMaterial.uniforms['scale'].value = new THREE.Vector2(1.0/distScale, 1.0*aspect/distScale);
 
 		// Create render target
+		if ( renderTarget ) renderTarget.dispose();
 		renderTarget = new THREE.WebGLRenderTarget( HMD.hResolution*distScale/2, HMD.vResolution*distScale, RTParams );
 		RTMaterial.uniforms[ "texid" ].value = renderTarget;
 
@@ -194,4 +195,13 @@ THREE.OculusRiftEffect = function ( renderer, options ) {
 
 	};
 
+	this.dispose = function() {
+		if ( RTMaterial ) {
+			RTMaterial.dispose();
+		}
+		if ( renderTarget ) {
+			renderTarget.dispose();
+		}
+	};
+
 };