提交 da7e7255 编写于 作者: M Mr.doob

Implemented extend pattern in WebGLRenderer2 objects.

上级 82f90a00
THREE.WebGLRenderer.LineRenderer = function ( lowlevelrenderer, info ) {
THREE.WebGLRenderer.LineRenderer = function(lowlevelrenderer, info){
THREE.WebGLRenderer.Object3DRenderer.call( this, lowlevelrenderer, info ); THREE.WebGLRenderer.Object3DRenderer.call( this, lowlevelrenderer, info );
};
};
THREE.WebGLRenderer.LineRenderer.prototype = Object.create( THREE.WebGLRenderer.Object3DRenderer.prototype ); THREE.WebGLRenderer.LineRenderer.prototype = Object.create( THREE.WebGLRenderer.Object3DRenderer.prototype );
THREE.WebGLRenderer.LineRenderer.prototype.createBuffers = function( geometry ) { THREE.extend( THREE.WebGLRenderer.LineRenderer.prototype, {
createBuffers: function ( geometry ) {
var renderer = this.renderer; var renderer = this.renderer;
geometry.__webglVertexBuffer = renderer.createBuffer(); geometry.__webglVertexBuffer = renderer.createBuffer();
...@@ -15,9 +17,10 @@ THREE.WebGLRenderer.LineRenderer.prototype.createBuffers = function( geometry ) ...@@ -15,9 +17,10 @@ THREE.WebGLRenderer.LineRenderer.prototype.createBuffers = function( geometry )
geometry.__webglLineDistanceBuffer = renderer.createBuffer(); geometry.__webglLineDistanceBuffer = renderer.createBuffer();
this.info.memory.geometries ++; this.info.memory.geometries ++;
};
THREE.WebGLRenderer.LineRenderer.prototype.initBuffers = function( geometry, object ) { },
initBuffers: function ( geometry, object ) {
var nvertices = geometry.vertices.length; var nvertices = geometry.vertices.length;
...@@ -28,10 +31,10 @@ THREE.WebGLRenderer.LineRenderer.prototype.initBuffers = function( geometry, obj ...@@ -28,10 +31,10 @@ THREE.WebGLRenderer.LineRenderer.prototype.initBuffers = function( geometry, obj
geometry.__webglLineCount = nvertices; geometry.__webglLineCount = nvertices;
this.initCustomAttributes ( geometry, object ); this.initCustomAttributes ( geometry, object );
};
},
THREE.WebGLRenderer.LineRenderer.prototype.setBuffers = function( geometry, object) { setBuffers: function ( geometry, object ) {
var renderer = this.renderer; var renderer = this.renderer;
var v, c, d, vertex, offset, color, var v, c, d, vertex, offset, color,
...@@ -197,4 +200,7 @@ THREE.WebGLRenderer.LineRenderer.prototype.setBuffers = function( geometry, obje ...@@ -197,4 +200,7 @@ THREE.WebGLRenderer.LineRenderer.prototype.setBuffers = function( geometry, obje
} }
} }
};
}
} );
THREE.WebGLRenderer.MeshRenderer = function ( lowlevelrenderer, info ) {
THREE.WebGLRenderer.MeshRenderer = function(lowlevelrenderer, info){
THREE.WebGLRenderer.Object3DRenderer.call( this, lowlevelrenderer, info ); THREE.WebGLRenderer.Object3DRenderer.call( this, lowlevelrenderer, info );
};
};
THREE.WebGLRenderer.MeshRenderer.prototype = Object.create( THREE.WebGLRenderer.Object3DRenderer.prototype ); THREE.WebGLRenderer.MeshRenderer.prototype = Object.create( THREE.WebGLRenderer.Object3DRenderer.prototype );
THREE.WebGLRenderer.MeshRenderer.prototype.createBuffers = function( geometryGroup ) { THREE.extend( THREE.WebGLRenderer.MeshRenderer.prototype, {
createBuffers: function ( geometryGroup ) {
var renderer = this.renderer; var renderer = this.renderer;
geometryGroup.__webglVertexBuffer = renderer.createBuffer(); geometryGroup.__webglVertexBuffer = renderer.createBuffer();
...@@ -51,9 +53,9 @@ THREE.WebGLRenderer.MeshRenderer.prototype.createBuffers = function( geometryGro ...@@ -51,9 +53,9 @@ THREE.WebGLRenderer.MeshRenderer.prototype.createBuffers = function( geometryGro
this.info.memory.geometries ++; this.info.memory.geometries ++;
}; },
THREE.WebGLRenderer.MeshRenderer.prototype.initBuffers = function( geometryGroup, object ) { initBuffers: function ( geometryGroup, object ) {
var geometry = object.geometry, var geometry = object.geometry,
faces3 = geometryGroup.faces3, faces3 = geometryGroup.faces3,
...@@ -203,11 +205,9 @@ THREE.WebGLRenderer.MeshRenderer.prototype.initBuffers = function( geometryGroup ...@@ -203,11 +205,9 @@ THREE.WebGLRenderer.MeshRenderer.prototype.initBuffers = function( geometryGroup
geometryGroup.__inittedArrays = true; geometryGroup.__inittedArrays = true;
}; },
THREE.WebGLRenderer.MeshRenderer.prototype.setBuffers = function( geometryGroup, object, dispose, material ) { setBuffers: function ( geometryGroup, object, dispose, material ) {
if ( ! geometryGroup.__inittedArrays ) { if ( ! geometryGroup.__inittedArrays ) {
...@@ -1613,4 +1613,6 @@ THREE.WebGLRenderer.MeshRenderer.prototype.setBuffers = function( geometryGroup, ...@@ -1613,4 +1613,6 @@ THREE.WebGLRenderer.MeshRenderer.prototype.setBuffers = function( geometryGroup,
} }
}; }
} );
THREE.WebGLRenderer.Object3DRenderer = function ( lowlevelrenderer, info ) {
THREE.WebGLRenderer.Object3DRenderer = function(lowlevelrenderer, info){
this.renderer = lowlevelrenderer; this.renderer = lowlevelrenderer;
this.info = info; this.info = info;
}; };
THREE.WebGLRenderer.Object3DRenderer.prototype.getBufferMaterial = function( object, geometryGroup ) { THREE.extend( THREE.WebGLRenderer.Object3DRenderer.prototype, {
getBufferMaterial: function ( object, geometryGroup ) {
return object.material instanceof THREE.MeshFaceMaterial return object.material instanceof THREE.MeshFaceMaterial
? object.material.materials[ geometryGroup.materialIndex ] ? object.material.materials[ geometryGroup.materialIndex ]
: object.material; : object.material;
}; },
THREE.WebGLRenderer.Object3DRenderer.prototype.bufferGuessUVType = function( material ) { bufferGuessUVType: function ( material ) {
// material must use some texture to require uvs // material must use some texture to require uvs
...@@ -25,9 +28,9 @@ THREE.WebGLRenderer.Object3DRenderer.prototype.bufferGuessUVType = function( mat ...@@ -25,9 +28,9 @@ THREE.WebGLRenderer.Object3DRenderer.prototype.bufferGuessUVType = function( mat
return false; return false;
}; },
THREE.WebGLRenderer.Object3DRenderer.prototype.bufferGuessNormalType = function ( material ) { bufferGuessNormalType: function ( material ) {
// only MeshBasicMaterial and MeshDepthMaterial don't need normals // only MeshBasicMaterial and MeshDepthMaterial don't need normals
...@@ -47,16 +50,15 @@ THREE.WebGLRenderer.Object3DRenderer.prototype.bufferGuessNormalType = function ...@@ -47,16 +50,15 @@ THREE.WebGLRenderer.Object3DRenderer.prototype.bufferGuessNormalType = function
} }
}; },
THREE.WebGLRenderer.Object3DRenderer.prototype.materialNeedsSmoothNormals = function ( material ) { materialNeedsSmoothNormals: function ( material ) {
return material && material.shading !== undefined && material.shading === THREE.SmoothShading; return material && material.shading !== undefined && material.shading === THREE.SmoothShading;
}; },
THREE.WebGLRenderer.Object3DRenderer.prototype.bufferGuessVertexColorType = function ( material ) { bufferGuessVertexColorType: function ( material ) {
if ( material.vertexColors ) { if ( material.vertexColors ) {
...@@ -66,10 +68,9 @@ THREE.WebGLRenderer.Object3DRenderer.prototype.bufferGuessVertexColorType = func ...@@ -66,10 +68,9 @@ THREE.WebGLRenderer.Object3DRenderer.prototype.bufferGuessVertexColorType = func
return false; return false;
}; },
THREE.WebGLRenderer.Object3DRenderer.prototype.initCustomAttributes = function( geometry, object ) { initCustomAttributes: function ( geometry, object ) {
var nvertices = geometry.vertices.length; var nvertices = geometry.vertices.length;
...@@ -115,10 +116,12 @@ THREE.WebGLRenderer.Object3DRenderer.prototype.initCustomAttributes = function( ...@@ -115,10 +116,12 @@ THREE.WebGLRenderer.Object3DRenderer.prototype.initCustomAttributes = function(
} }
}; },
THREE.WebGLRenderer.Object3DRenderer.prototype.numericalSort = function( a, b ) { numericalSort: function ( a, b ) {
return b[ 0 ] - a[ 0 ]; return b[ 0 ] - a[ 0 ];
}; }
} );
THREE.WebGLRenderer.ParticleRenderer = function ( lowlevelrenderer, info ) {
THREE.WebGLRenderer.ParticleRenderer = function(lowlevelrenderer, info){
THREE.WebGLRenderer.Object3DRenderer.call( this, lowlevelrenderer, info ); THREE.WebGLRenderer.Object3DRenderer.call( this, lowlevelrenderer, info );
}; };
THREE.WebGLRenderer.ParticleRenderer.prototype = Object.create( THREE.WebGLRenderer.Object3DRenderer.prototype ); THREE.WebGLRenderer.ParticleRenderer.prototype = Object.create( THREE.WebGLRenderer.Object3DRenderer.prototype );
THREE.WebGLRenderer.ParticleRenderer.prototype.createBuffers = function( geometry ) { THREE.extend( THREE.WebGLRenderer.ParticleRenderer.prototype, {
createBuffers: function ( geometry ) {
var renderer = this.renderer; var renderer = this.renderer;
geometry.__webglVertexBuffer = renderer.createBuffer(); geometry.__webglVertexBuffer = renderer.createBuffer();
geometry.__webglColorBuffer = renderer.createBuffer(); geometry.__webglColorBuffer = renderer.createBuffer();
this.info.memory.geometries ++; this.info.memory.geometries ++;
}; },
THREE.WebGLRenderer.ParticleRenderer.prototype.initBuffers = function( geometry, object ) { initBuffers: function ( geometry, object ) {
var nvertices = geometry.vertices.length; var nvertices = geometry.vertices.length;
...@@ -28,10 +31,9 @@ THREE.WebGLRenderer.ParticleRenderer.prototype.initBuffers = function( geometry, ...@@ -28,10 +31,9 @@ THREE.WebGLRenderer.ParticleRenderer.prototype.initBuffers = function( geometry,
this.initCustomAttributes ( geometry, object ); this.initCustomAttributes ( geometry, object );
}; },
setBuffers: function ( geometry, object , projectionScreenMatrix ) {
THREE.WebGLRenderer.ParticleRenderer.prototype.setBuffers = function( geometry, object , projectionScreenMatrix) {
var renderer = this.renderer; var renderer = this.renderer;
var v, c, vertex, offset, index, color, var v, c, vertex, offset, index, color,
...@@ -350,8 +352,9 @@ THREE.WebGLRenderer.ParticleRenderer.prototype.setBuffers = function( geometry, ...@@ -350,8 +352,9 @@ THREE.WebGLRenderer.ParticleRenderer.prototype.setBuffers = function( geometry,
} }
}
}; } );
THREE.WebGLRenderer.ParticleRenderer._m1 = new THREE.Matrix4(); THREE.WebGLRenderer.ParticleRenderer._m1 = new THREE.Matrix4();
THREE.WebGLRenderer.ParticleRenderer._v1 = new THREE.Vector3(); THREE.WebGLRenderer.ParticleRenderer._v1 = new THREE.Vector3();
THREE.WebGLRenderer.RibbonRenderer = function ( lowlevelrenderer, info ) {
THREE.WebGLRenderer.RibbonRenderer = function(lowlevelrenderer, info){
THREE.WebGLRenderer.Object3DRenderer.call( this, lowlevelrenderer, info ); THREE.WebGLRenderer.Object3DRenderer.call( this, lowlevelrenderer, info );
}; };
THREE.WebGLRenderer.RibbonRenderer.prototype = Object.create( THREE.WebGLRenderer.Object3DRenderer.prototype ); THREE.WebGLRenderer.RibbonRenderer.prototype = Object.create( THREE.WebGLRenderer.Object3DRenderer.prototype );
THREE.WebGLRenderer.RibbonRenderer.prototype.createBuffers = function( geometry ) { THREE.extend( THREE.WebGLRenderer.RibbonRenderer.prototype, {
createBuffers: function ( geometry ) {
var renderer = this.renderer; var renderer = this.renderer;
geometry.__webglVertexBuffer = renderer.createBuffer(); geometry.__webglVertexBuffer = renderer.createBuffer();
...@@ -14,9 +17,9 @@ THREE.WebGLRenderer.RibbonRenderer.prototype.createBuffers = function( geometry ...@@ -14,9 +17,9 @@ THREE.WebGLRenderer.RibbonRenderer.prototype.createBuffers = function( geometry
geometry.__webglNormalBuffer = renderer.createBuffer(); geometry.__webglNormalBuffer = renderer.createBuffer();
this.info.memory.geometries ++; this.info.memory.geometries ++;
}; },
THREE.WebGLRenderer.RibbonRenderer.prototype.initBuffers = function( geometry, object ) { initBuffers: function ( geometry, object ) {
var nvertices = geometry.vertices.length; var nvertices = geometry.vertices.length;
...@@ -28,10 +31,9 @@ THREE.WebGLRenderer.RibbonRenderer.prototype.initBuffers = function( geometry, o ...@@ -28,10 +31,9 @@ THREE.WebGLRenderer.RibbonRenderer.prototype.initBuffers = function( geometry, o
this.initCustomAttributes ( geometry, object ); this.initCustomAttributes ( geometry, object );
}; },
THREE.WebGLRenderer.RibbonRenderer.prototype.setBuffers = function( geometry, object , projectionScreenMatrix) { setBuffers: function ( geometry, object , projectionScreenMatrix ) {
var renderer = this.renderer; var renderer = this.renderer;
var v, c, n, vertex, offset, color, normal, var v, c, n, vertex, offset, color, normal,
...@@ -202,4 +204,6 @@ THREE.WebGLRenderer.RibbonRenderer.prototype.setBuffers = function( geometry, ob ...@@ -202,4 +204,6 @@ THREE.WebGLRenderer.RibbonRenderer.prototype.setBuffers = function( geometry, ob
} }
}; }
} );
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册