Browse Source

WebGLRenderer: Moved index type/size code to renderBufferDirect.

Mr.doob 10 years ago
parent
commit
5f9033182f
1 changed files with 23 additions and 49 deletions
  1. 23 49
      src/renderers/WebGLRenderer.js

+ 23 - 49
src/renderers/WebGLRenderer.js

@@ -847,19 +847,35 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 
 		}
 		}
 
 
-		if ( geometry.attributes.index !== undefined ) {
+		var index = geometry.attributes.index;
+
+		if ( index !== undefined ) {
+
+			var type, size;
+
+			if ( index.array instanceof Uint32Array && extensions.get( 'OES_element_index_uint' ) ) {
+
+				type = _gl.UNSIGNED_INT;
+				size = 4;
+
+			} else {
+
+				type = _gl.UNSIGNED_SHORT;
+				size = 2;
+
+			}
 
 
 			if ( object instanceof THREE.Mesh ) {
 			if ( object instanceof THREE.Mesh ) {
 
 
-				renderIndexedMesh( material, geometry, program, updateBuffers );
+				renderIndexedMesh( type, size, material, geometry, program, updateBuffers );
 
 
 			} else if ( object instanceof THREE.Line ) {
 			} else if ( object instanceof THREE.Line ) {
 
 
-				renderIndexedLine( material, geometry, object, program, updateBuffers );
+				renderIndexedLine( type, size, material, geometry, object, program, updateBuffers );
 
 
 			} else if ( object instanceof THREE.PointCloud ) {
 			} else if ( object instanceof THREE.PointCloud ) {
 
 
-				renderIndexedPointCloud( material, geometry, program, updateBuffers );
+				renderIndexedPointCloud( type, size, material, geometry, program, updateBuffers );
 
 
 			}
 			}
 
 
@@ -1014,7 +1030,7 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 
 	}
 	}
 
 
-	function renderIndexedMesh( material, geometry, program, updateBuffers ) {
+	function renderIndexedMesh( type, size, material, geometry, program, updateBuffers ) {
 
 
 		var mode = _gl.TRIANGLES;
 		var mode = _gl.TRIANGLES;
 
 
@@ -1028,20 +1044,6 @@ THREE.WebGLRenderer = function ( parameters ) {
 		var index = geometry.attributes.index;
 		var index = geometry.attributes.index;
 		var indexBuffer = objects.getAttributeBuffer( index );
 		var indexBuffer = objects.getAttributeBuffer( index );
 
 
-		var type, size;
-
-		if ( index.array instanceof Uint32Array && extensions.get( 'OES_element_index_uint' ) ) {
-
-			type = _gl.UNSIGNED_INT;
-			size = 4;
-
-		} else {
-
-			type = _gl.UNSIGNED_SHORT;
-			size = 2;
-
-		}
-
 		var drawcall = geometry.drawcalls;
 		var drawcall = geometry.drawcalls;
 
 
 		if ( drawcall.length === 0 ) {
 		if ( drawcall.length === 0 ) {
@@ -1218,7 +1220,7 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 
 	}
 	}
 
 
-	function renderIndexedLine( material, geometry, object, program, updateBuffers ) {
+	function renderIndexedLine( type, size, material, geometry, object, program, updateBuffers ) {
 
 
 		var mode = object instanceof THREE.LineSegments ? _gl.LINES : _gl.LINE_STRIP;
 		var mode = object instanceof THREE.LineSegments ? _gl.LINES : _gl.LINE_STRIP;
 
 
@@ -1230,20 +1232,6 @@ THREE.WebGLRenderer = function ( parameters ) {
 		var index = geometry.attributes.index;
 		var index = geometry.attributes.index;
 		var indexBuffer = objects.getAttributeBuffer( index );
 		var indexBuffer = objects.getAttributeBuffer( index );
 
 
-		var type, size;
-
-		if ( index.array instanceof Uint32Array && extensions.get( 'OES_element_index_uint' ) ) {
-
-			type = _gl.UNSIGNED_INT;
-			size = 4;
-
-		} else {
-
-			type = _gl.UNSIGNED_SHORT;
-			size = 2;
-
-		}
-
 		var drawcall = geometry.drawcalls;
 		var drawcall = geometry.drawcalls;
 
 
 		if ( drawcall.length === 0 ) {
 		if ( drawcall.length === 0 ) {
@@ -1330,27 +1318,13 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 
 	}
 	}
 
 
-	function renderIndexedPointCloud( material, geometry, program, updateBuffers ) {
+	function renderIndexedPointCloud( type, size, material, geometry, program, updateBuffers ) {
 
 
 		var mode = _gl.POINTS;
 		var mode = _gl.POINTS;
 
 
 		var index = geometry.attributes.index;
 		var index = geometry.attributes.index;
 		var indexBuffer = objects.getAttributeBuffer( index );
 		var indexBuffer = objects.getAttributeBuffer( index );
 
 
-		var type, size;
-
-		if ( index.array instanceof Uint32Array && extensions.get( 'OES_element_index_uint' ) ) {
-
-			type = _gl.UNSIGNED_INT;
-			size = 4;
-
-		} else {
-
-			type = _gl.UNSIGNED_SHORT;
-			size = 2;
-
-		}
-
 		var drawcall = geometry.drawcalls;
 		var drawcall = geometry.drawcalls;
 
 
 		if ( drawcall.length === 0 ) {
 		if ( drawcall.length === 0 ) {