瀏覽代碼

WebGLObjects: Less hacky update optimisation.

Mr.doob 8 年之前
父節點
當前提交
0559c99a30
共有 2 個文件被更改,包括 13 次插入3 次删除
  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();
 		setDefaultGLState();
 
 
 		properties.clear();
 		properties.clear();
+		objects.clear();
 
 
 	}
 	}
 
 

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

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