Browse Source

Update WebGLRenderer.js

gero3 11 years ago
parent
commit
94115fa974
1 changed files with 9 additions and 6 deletions
  1. 9 6
      src/renderers/WebGLRenderer.js

+ 9 - 6
src/renderers/WebGLRenderer.js

@@ -899,8 +899,10 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 
 		}
 		}
 
 
-		geometryGroup.__faceArray = new Uint16Array( ntris * 3 );
-		geometryGroup.__lineArray = new Uint16Array( nlines * 2 );
+		var type = _glExtensionElementIndexUint ? Uint32Array : Uint16Array;
+
+		geometryGroup.__faceArray = new type( ntris * 3 );
+		geometryGroup.__lineArray = new type( nlines * 2 );
 
 
 		var m, ml;
 		var m, ml;
 
 
@@ -3005,16 +3007,17 @@ THREE.WebGLRenderer = function ( parameters ) {
 			if ( material.wireframe ) {
 			if ( material.wireframe ) {
 
 
 				setLineWidth( material.wireframeLinewidth );
 				setLineWidth( material.wireframeLinewidth );
-
+				var type = _glExtensionElementIndexUint ? gl.UNSIGNED_INT : _gl.UNSIGNED_SHORT;
 				if ( updateBuffers ) _gl.bindBuffer( _gl.ELEMENT_ARRAY_BUFFER, geometryGroup.__webglLineBuffer );
 				if ( updateBuffers ) _gl.bindBuffer( _gl.ELEMENT_ARRAY_BUFFER, geometryGroup.__webglLineBuffer );
-				_gl.drawElements( _gl.LINES, geometryGroup.__webglLineCount, _gl.UNSIGNED_SHORT, 0 );
+				_gl.drawElements( _gl.LINES, geometryGroup.__webglLineCount, type, 0 );
 
 
 			// triangles
 			// triangles
 
 
 			} else {
 			} else {
 
 
+				var type = _glExtensionElementIndexUint ? gl.UNSIGNED_INT : _gl.UNSIGNED_SHORT;
 				if ( updateBuffers ) _gl.bindBuffer( _gl.ELEMENT_ARRAY_BUFFER, geometryGroup.__webglFaceBuffer );
 				if ( updateBuffers ) _gl.bindBuffer( _gl.ELEMENT_ARRAY_BUFFER, geometryGroup.__webglFaceBuffer );
-				_gl.drawElements( _gl.TRIANGLES, geometryGroup.__webglFaceCount, _gl.UNSIGNED_SHORT, 0 );
+				_gl.drawElements( _gl.TRIANGLES, geometryGroup.__webglFaceCount, type, 0 );
 
 
 			}
 			}
 
 
@@ -3740,7 +3743,7 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 
 				if ( geometry.geometryGroups === undefined ) {
 				if ( geometry.geometryGroups === undefined ) {
 
 
-					geometry.makeGroups( material instanceof THREE.MeshFaceMaterial );
+					geometry.makeGroups( material instanceof THREE.MeshFaceMaterial, _glExtensionElementIndexUint ? 4294967296 : 65535  );
 
 
 				}
 				}