Browse Source

Merge pull request #7515 from benaadams/triangle-strip

Triangle Strip & Fan
Mr.doob 9 years ago
parent
commit
ea43444000
3 changed files with 29 additions and 1 deletions
  1. 6 0
      src/Three.js
  2. 8 0
      src/objects/Mesh.js
  3. 15 1
      src/renderers/WebGLRenderer.js

+ 6 - 0
src/Three.js

@@ -368,3 +368,9 @@ THREE.InterpolateSmooth = 2302;
 THREE.ZeroCurvatureEnding = 2400;
 THREE.ZeroSlopeEnding = 2401;
 THREE.WrapAroundEnding = 2402;
+
+// Triangle Draw modes
+
+THREE.TrianglesDrawMode = 0;
+THREE.TriangleStripDrawMode = 1;
+THREE.TriangleFanDrawMode = 2;

+ 8 - 0
src/objects/Mesh.js

@@ -14,6 +14,8 @@ THREE.Mesh = function ( geometry, material ) {
 	this.geometry = geometry !== undefined ? geometry : new THREE.Geometry();
 	this.material = material !== undefined ? material : new THREE.MeshBasicMaterial( { color: Math.random() * 0xffffff } );
 
+	this.drawMode = THREE.TrianglesDrawMode;
+	
 	this.updateMorphTargets();
 
 };
@@ -21,6 +23,12 @@ THREE.Mesh = function ( geometry, material ) {
 THREE.Mesh.prototype = Object.create( THREE.Object3D.prototype );
 THREE.Mesh.prototype.constructor = THREE.Mesh;
 
+THREE.Mesh.prototype.setDrawMode = function ( mode ) {
+
+	this.drawMode = mode;
+
+};
+
 THREE.Mesh.prototype.updateMorphTargets = function () {
 
 	if ( this.geometry.morphTargets !== undefined && this.geometry.morphTargets.length > 0 ) {

+ 15 - 1
src/renderers/WebGLRenderer.js

@@ -846,8 +846,22 @@ THREE.WebGLRenderer = function ( parameters ) {
 				renderer.setMode( _gl.LINES );
 
 			} else {
+				
+				switch ( object.mode ) {
 
-				renderer.setMode( _gl.TRIANGLES );
+					case THREE.TrianglesDrawMode:
+						renderer.setMode( _gl.TRIANGLES );
+						break;
+
+					case THREE.TriangleStripDrawMode:
+						renderer.setMode( _gl.TRIANGLE_STRIP );
+						break;
+
+					case THREE.TriangleFanDrawMode:
+						renderer.setMode( _gl.TRIANGLE_FAN );
+						break;
+
+				}
 
 			}