|
@@ -599,22 +599,37 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
// Buffer deallocation
|
|
|
|
|
|
var deleteBuffers = function ( geometry ) {
|
|
|
+
|
|
|
+ var buffers = [
|
|
|
+ '__webglVertexBuffer',
|
|
|
+ '__webglNormalBuffer',
|
|
|
+ '__webglTangentBuffer',
|
|
|
+ '__webglColorBuffer',
|
|
|
+ '__webglUVBuffer',
|
|
|
+ '__webglUV2Buffer',
|
|
|
+
|
|
|
+ '__webglSkinIndicesBuffer',
|
|
|
+ '__webglSkinWeightsBuffer',
|
|
|
+
|
|
|
+ '__webglFaceBuffer',
|
|
|
+ '__webglLineBuffer',
|
|
|
+
|
|
|
+ '__webglLineDistanceBuffer'
|
|
|
+ ];
|
|
|
+
|
|
|
+ for ( var i = 0, l = buffers.length; i < l; i ++ ) {
|
|
|
+
|
|
|
+ var name = buffers[ i ];
|
|
|
+
|
|
|
+ if ( geometry[ name ] !== undefined ) {
|
|
|
+
|
|
|
+ _gl.deleteBuffer( geometry[ name ] );
|
|
|
+ delete geometry[ name ];
|
|
|
|
|
|
- if ( geometry.__webglVertexBuffer !== undefined ) _gl.deleteBuffer( geometry.__webglVertexBuffer );
|
|
|
- if ( geometry.__webglNormalBuffer !== undefined ) _gl.deleteBuffer( geometry.__webglNormalBuffer );
|
|
|
- if ( geometry.__webglTangentBuffer !== undefined ) _gl.deleteBuffer( geometry.__webglTangentBuffer );
|
|
|
- if ( geometry.__webglColorBuffer !== undefined ) _gl.deleteBuffer( geometry.__webglColorBuffer );
|
|
|
- if ( geometry.__webglUVBuffer !== undefined ) _gl.deleteBuffer( geometry.__webglUVBuffer );
|
|
|
- if ( geometry.__webglUV2Buffer !== undefined ) _gl.deleteBuffer( geometry.__webglUV2Buffer );
|
|
|
-
|
|
|
- if ( geometry.__webglSkinIndicesBuffer !== undefined ) _gl.deleteBuffer( geometry.__webglSkinIndicesBuffer );
|
|
|
- if ( geometry.__webglSkinWeightsBuffer !== undefined ) _gl.deleteBuffer( geometry.__webglSkinWeightsBuffer );
|
|
|
+ }
|
|
|
|
|
|
- if ( geometry.__webglFaceBuffer !== undefined ) _gl.deleteBuffer( geometry.__webglFaceBuffer );
|
|
|
- if ( geometry.__webglLineBuffer !== undefined ) _gl.deleteBuffer( geometry.__webglLineBuffer );
|
|
|
+ }
|
|
|
|
|
|
- if ( geometry.__webglLineDistanceBuffer !== undefined ) _gl.deleteBuffer( geometry.__webglLineDistanceBuffer );
|
|
|
-
|
|
|
// custom attributes
|
|
|
|
|
|
if ( geometry.__webglCustomAttributesList !== undefined ) {
|
|
@@ -625,6 +640,8 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
}
|
|
|
|
|
|
+ delete geometry.__webglCustomAttributesList;
|
|
|
+
|
|
|
}
|
|
|
|
|
|
_this.info.memory.geometries --;
|
|
@@ -633,7 +650,7 @@ THREE.WebGLRenderer = function ( parameters ) {
|
|
|
|
|
|
var deallocateGeometry = function ( geometry ) {
|
|
|
|
|
|
- geometry.__webglInit = undefined;
|
|
|
+ delete geometry.__webglInit;
|
|
|
|
|
|
if ( geometry instanceof THREE.BufferGeometry ) {
|
|
|
|