瀏覽代碼

WebGLRenderer: Update object inside renderBufferDirect. Fixes #6996.

Mr.doob 10 年之前
父節點
當前提交
81d4c04065
共有 2 個文件被更改,包括 6 次插入16 次删除
  1. 1 4
      src/renderers/WebGLRenderer.js
  2. 5 12
      src/renderers/webgl/WebGLObjects.js

+ 1 - 4
src/renderers/WebGLRenderer.js

@@ -795,7 +795,7 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 		setMaterial( material );
 
-		var geometry = objects.geometries.get( object );
+		var geometry = objects.update( object );
 		var program = setProgram( camera, lights, fog, material, object );
 
 		var updateBuffers = false,
@@ -1560,9 +1560,6 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 		}
 
-		objects.update( opaqueObjects );
-		objects.update( transparentObjects );
-
 		//
 
 		shadowMap.render( scene, camera );

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

@@ -43,7 +43,6 @@ THREE.WebGLObjects = function ( gl, properties, info ) {
 	//
 
 	this.objects = objects;
-	this.geometries = geometries;
 
 	this.init = function ( object ) {
 
@@ -77,7 +76,9 @@ THREE.WebGLObjects = function ( gl, properties, info ) {
 
 	};
 
-	function updateObject( object ) {
+	this.update = function ( object ) {
+
+		// TODO: Avoid updating twice (when using shadowMap). Maybe add frame counter.
 
 		var geometry = geometries.get( object );
 
@@ -111,6 +112,8 @@ THREE.WebGLObjects = function ( gl, properties, info ) {
 
 		}
 
+		return geometry;
+
 	}
 
 	function updateAttribute( attribute, name ) {
@@ -194,16 +197,6 @@ THREE.WebGLObjects = function ( gl, properties, info ) {
 
 	};
 
-	this.update = function ( renderList ) {
-
-		for ( var i = 0, ul = renderList.length; i < ul; i ++ ) {
-
-			updateObject( renderList[ i ].object );
-
-		}
-
-	};
-
 	this.clear = function () {
 
 		objects = {};