Browse Source

WebGLRenderer: Simplified renderMesh, renderLine and renderPointCloud.

Mr.doob 10 years ago
parent
commit
bc67736e11
1 changed files with 36 additions and 44 deletions
  1. 36 44
      src/renderers/WebGLRenderer.js

+ 36 - 44
src/renderers/WebGLRenderer.js

@@ -881,17 +881,47 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 		}	else {
 
+			if ( updateBuffers ) {
+
+				setupVertexAttributes( material, program, geometry, 0 );
+
+			}
+
 			if ( object instanceof THREE.Mesh ) {
 
-				renderMesh( material, geometry, program, updateBuffers );
+				if ( material.wireframe === true ) {
+
+					state.setLineWidth( material.wireframeLinewidth * pixelRatio );
+
+					renderMesh( _gl.LINES, geometry, material );
+
+				} else {
+
+					renderMesh( _gl.TRIANGLES, geometry, material );
+
+				}
 
 			} else if ( object instanceof THREE.Line ) {
 
-				renderLine( material, geometry, object, program, updateBuffers );
+				var lineWidth = material.linewidth;
+
+				if ( lineWidth === undefined ) lineWidth = 1; // Not using Line*Material
+
+				state.setLineWidth( lineWidth * pixelRatio );
+
+				if ( object instanceof THREE.LineSegments ) {
+
+					renderLine( _gl.LINES, geometry );
+
+				} else {
+
+					renderLine( _gl.LINE_STRIP, geometry );
+
+				}
 
 			} else if ( object instanceof THREE.PointCloud ) {
 
-				renderPointCloud( material, geometry, program, updateBuffers );
+				renderPointCloud( _gl.POINTS, geometry );
 
 			}
 
@@ -1127,24 +1157,7 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 	}
 
-	function renderMesh( material, geometry, program, updateBuffers ) {
-
-		var mode = _gl.TRIANGLES;
-
-		if ( material.wireframe === true ) {
-
-			mode = _gl.LINES;
-			state.setLineWidth( material.wireframeLinewidth * pixelRatio );
-
-		}
-
-		if ( updateBuffers ) {
-
-			setupVertexAttributes( material, program, geometry, 0 );
-
-		}
-
-		// non-indexed triangles
+	function renderMesh( mode, geometry ) {
 
 		var drawcall = geometry.drawcalls;
 
@@ -1278,20 +1291,7 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 	}
 
-	function renderLine( material, geometry, object, program, updateBuffers ) {
-
-		var mode = object instanceof THREE.LineSegments ? _gl.LINES : _gl.LINE_STRIP;
-
-		// In case user is not using Line*Material by mistake
-		var lineWidth = material.linewidth !== undefined ? material.linewidth : 1;
-
-		state.setLineWidth( lineWidth * pixelRatio );
-
-		if ( updateBuffers ) {
-
-			setupVertexAttributes( material, program, geometry, 0 );
-
-		}
+	function renderLine( mode, geometry ) {
 
 		var position = geometry.attributes.position;
 		var drawcall = geometry.drawcalls;
@@ -1371,15 +1371,7 @@ THREE.WebGLRenderer = function ( parameters ) {
 
 	}
 
-	function renderPointCloud( material, geometry, program, updateBuffers ) {
-
-		var mode = _gl.POINTS;
-
-		if ( updateBuffers ) {
-
-			setupVertexAttributes( material, program, geometry, 0 );
-
-		}
+	function renderPointCloud( mode, geometry ) {
 
 		var position = geometry.attributes.position;
 		var drawcall = geometry.drawcalls;