Browse Source

WebGLRenderer: Use materialIndex 0 when combining BufferGeometry and MeshFaceMaterial. Fixes #4423.

Mr.doob 11 years ago
parent
commit
785f8edf51
1 changed files with 7 additions and 9 deletions
  1. 7 9
      src/renderers/WebGLRenderer.js

+ 7 - 9
src/renderers/WebGLRenderer.js

@@ -3608,17 +3608,17 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 
 	function unrollBufferMaterial ( globject ) {
 	function unrollBufferMaterial ( globject ) {
 
 
-		var object = globject.object,
-			buffer = globject.buffer,
-			material, materialIndex, meshMaterial;
+		var object = globject.object;
+		var buffer = globject.buffer;
 
 
-		meshMaterial = object.material;
+		var geometry = object.geometry;
+		var material = object.material;
 
 
-		if ( meshMaterial instanceof THREE.MeshFaceMaterial ) {
+		if ( material instanceof THREE.MeshFaceMaterial ) {
 
 
-			materialIndex = buffer.materialIndex;
+			var materialIndex = geometry instanceof THREE.BufferGeometry ? 0 : buffer.materialIndex;
 
 
-			material = meshMaterial.materials[ materialIndex ];
+			material = material.materials[ materialIndex ];
 
 
 			if ( material.transparent ) {
 			if ( material.transparent ) {
 
 
@@ -3634,8 +3634,6 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 
 		} else {
 		} else {
 
 
-			material = meshMaterial;
-
 			if ( material ) {
 			if ( material ) {
 
 
 				if ( material.transparent ) {
 				if ( material.transparent ) {