瀏覽代碼

Fixed performance issue in WebGL version of materials test. We are back at 60 fps ;)

alteredq 14 年之前
父節點
當前提交
59280c0cbb
共有 1 個文件被更改,包括 14 次插入5 次删除
  1. 14 5
      examples/materials_gl.html

+ 14 - 5
examples/materials_gl.html

@@ -65,7 +65,7 @@
 
 				// Spheres
 
-				var geometry = new Sphere( 70, 32, 16, true );
+				var geometry1 = new Sphere( 70, 32, 16, true );
 
 				var generatedTexture = new THREE.Texture( generateTexture() );
 				generatedTexture.loaded = 1;
@@ -86,9 +86,13 @@
 				materials.push( { material: new THREE.MeshBasicMaterial( { map: generatedTexture } ), overdraw: true, doubleSided: false } );
                 materials.push( { material: new THREE.MeshLambertMaterial( { map: generatedTexture } ), overdraw: true, doubleSided: false } );
 
-				for ( var i = 0, l = geometry.faces.length; i < l; i ++ ) {
+                // Extra mesh to be broken down for MeshFaceMaterial
+                
+                var geometry2 = new Sphere( 70, 32, 16, true );
+                
+				for ( var i = 0, l = geometry2.faces.length; i < l; i ++ ) {
 
-					var face = geometry.faces[ i ];
+					var face = geometry2.faces[ i ];
 					if ( Math.random() > 0.7 ) face.material = [ materials[ Math.floor( Math.random() * materials.length )  ].material ];
 
 				}
@@ -97,9 +101,14 @@
 
 				objects = [];
 
+                var sphere, geometry;
+                
 				for ( var i = 0, l = materials.length; i < l; i ++ ) {
-
-					var sphere = new THREE.Mesh( geometry, materials[ i ].material );
+                
+                    geometry = materials[ i ].material instanceof THREE.MeshFaceMaterial ? geometry2 : geometry1;
+                        
+                    sphere = new THREE.Mesh( geometry, materials[ i ].material );
+                    
 					sphere.overdraw = materials[ i ].overdraw;
 					sphere.doubleSided = materials[ i ].doubleSided;