Browse Source

Merge pull request #13102 from aardgoose/weakmap-2

use WeakMap in WebGL(Properties|Attributes)
Mr.doob 7 years ago
parent
commit
2e689604d5
2 changed files with 11 additions and 12 deletions
  1. 6 6
      src/renderers/webgl/WebGLAttributes.js
  2. 5 6
      src/renderers/webgl/WebGLProperties.js

+ 6 - 6
src/renderers/webgl/WebGLAttributes.js

@@ -4,7 +4,7 @@
 
 function WebGLAttributes( gl ) {
 
-	var buffers = {};
+	var buffers = new WeakMap();
 
 	function createBuffer( attribute, bufferType ) {
 
@@ -101,7 +101,7 @@ function WebGLAttributes( gl ) {
 
 		if ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;
 
-		return buffers[ attribute.uuid ];
+		return buffers.get( attribute );
 
 	}
 
@@ -109,13 +109,13 @@ function WebGLAttributes( gl ) {
 
 		if ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;
 
-		var data = buffers[ attribute.uuid ];
+		var data = buffers.get( attribute );
 
 		if ( data ) {
 
 			gl.deleteBuffer( data.buffer );
 
-			delete buffers[ attribute.uuid ];
+			buffers.delete( attribute );
 
 		}
 
@@ -125,11 +125,11 @@ function WebGLAttributes( gl ) {
 
 		if ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;
 
-		var data = buffers[ attribute.uuid ];
+		var data = buffers.get( attribute );
 
 		if ( data === undefined ) {
 
-			buffers[ attribute.uuid ] = createBuffer( attribute, bufferType );
+			buffers.set( attribute, createBuffer( attribute, bufferType ) );
 
 		} else if ( data.version < attribute.version ) {
 

+ 5 - 6
src/renderers/webgl/WebGLProperties.js

@@ -4,17 +4,16 @@
 
 function WebGLProperties() {
 
-	var properties = {};
+	var properties = new WeakMap();
 
 	function get( object ) {
 
-		var uuid = object.uuid;
-		var map = properties[ uuid ];
+		var map = properties.get( object );
 
 		if ( map === undefined ) {
 
 			map = {};
-			properties[ uuid ] = map;
+			properties.set( object, map);
 
 		}
 
@@ -24,7 +23,7 @@ function WebGLProperties() {
 
 	function remove( object ) {
 
-		delete properties[ object.uuid ];
+		properties.delete( object );
 
 	}
 
@@ -39,7 +38,7 @@ function WebGLProperties() {
 
 	function dispose() {
 
-		properties = {};
+		properties = new WeakMap();
 
 	}