Browse Source

WebGLObjects: Less hacky update optimisation.

Mr.doob 8 years ago
parent
commit
0559c99a30
2 changed files with 13 additions and 3 deletions
  1. 1 0
      src/renderers/WebGLRenderer.js
  2. 12 3
      src/renderers/webgl/WebGLObjects.js

+ 1 - 0
src/renderers/WebGLRenderer.js

@@ -543,6 +543,7 @@ function WebGLRenderer( parameters ) {
 		setDefaultGLState();
 
 		properties.clear();
+		objects.clear();
 
 	}
 

+ 12 - 3
src/renderers/webgl/WebGLObjects.js

@@ -4,6 +4,8 @@
 
 function WebGLObjects( gl, geometries, infoRender ) {
 
+	var updateList = {};
+
 	function update( object ) {
 
 		var frame = infoRender.frame;
@@ -13,7 +15,7 @@ function WebGLObjects( gl, geometries, infoRender ) {
 
 		// Update once per frame
 
-		if ( buffergeometry.__frame !== frame ) {
+		if ( updateList[ buffergeometry.id ] !== frame ) {
 
 			if ( geometry.isGeometry ) {
 
@@ -23,7 +25,7 @@ function WebGLObjects( gl, geometries, infoRender ) {
 
 			geometries.update( buffergeometry );
 
-			buffergeometry.__frame = frame;
+			updateList[ buffergeometry.id ] = frame;
 
 		}
 
@@ -31,9 +33,16 @@ function WebGLObjects( gl, geometries, infoRender ) {
 
 	}
 
+	function clear() {
+
+		updateList = {};
+
+	}
+
 	return {
 
-		update: update
+		update: update,
+		clear: clear
 
 	};