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

WebGLRenderer: Clean up.

上级 8f97b75b
......@@ -869,6 +869,96 @@ THREE.WebGLRenderer = function ( parameters ) {
};
this.renderBufferDirect = function ( camera, lights, fog, material, object ) {
if ( material.visible === false ) return;
setMaterial( material );
var geometry = objects.geometries.get( object );
var program = setProgram( camera, lights, fog, material, object );
var updateBuffers = false,
wireframeBit = material.wireframe ? 1 : 0,
geometryProgram = geometry.id + '_' + program.id + '_' + wireframeBit;
if ( geometryProgram !== _currentGeometryProgram ) {
_currentGeometryProgram = geometryProgram;
updateBuffers = true;
}
// morph targets
var morphTargetInfluences = object.morphTargetInfluences;
if ( morphTargetInfluences !== undefined ) {
var activeInfluences = [];
for ( var i = 0, l = morphTargetInfluences.length; i < l; i ++ ) {
var influence = morphTargetInfluences[ i ];
activeInfluences.push( [ influence, i ] );
}
activeInfluences.sort( numericalSort );
if ( activeInfluences.length > 8 ) {
activeInfluences.length = 8;
}
for ( var i = 0, l = activeInfluences.length; i < l; i ++ ) {
var influence = activeInfluences[ i ];
morphInfluences[ i ] = influence[ 0 ];
if ( influence[ 0 ] !== 0 ) {
var attribute = geometry.morphAttributes[ influence[ 1 ] ];
geometry.addAttribute( 'morphTarget' + i, attribute );
} else {
geometry.removeAttribute( 'morphTarget' + i );
}
}
var uniforms = program.getUniforms();
if ( uniforms.morphTargetInfluences !== null ) {
_gl.uniform1fv( uniforms.morphTargetInfluences, morphInfluences );
}
updateBuffers = true;
}
if ( object instanceof THREE.Mesh ) {
renderMesh( material, geometry, object, program, updateBuffers );
} else if ( object instanceof THREE.Line ) {
renderLine( material, geometry, object, program, updateBuffers );
} else if ( object instanceof THREE.PointCloud ) {
renderPointCloud( material, geometry, object, program, updateBuffers );
}
};
function setupVertexAttributes( material, program, geometry, startIndex ) {
var extension;
......@@ -1000,96 +1090,6 @@ THREE.WebGLRenderer = function ( parameters ) {
}
this.renderBufferDirect = function ( camera, lights, fog, material, object ) {
if ( material.visible === false ) return;
setMaterial( material );
var geometry = objects.geometries.get( object );
var program = setProgram( camera, lights, fog, material, object );
var updateBuffers = false,
wireframeBit = material.wireframe ? 1 : 0,
geometryProgram = geometry.id + '_' + program.id + '_' + wireframeBit;
if ( geometryProgram !== _currentGeometryProgram ) {
_currentGeometryProgram = geometryProgram;
updateBuffers = true;
}
// morph targets
var morphTargetInfluences = object.morphTargetInfluences;
if ( morphTargetInfluences !== undefined ) {
var activeInfluences = [];
for ( var i = 0, l = morphTargetInfluences.length; i < l; i ++ ) {
var influence = morphTargetInfluences[ i ];
activeInfluences.push( [ influence, i ] );
}
activeInfluences.sort( numericalSort );
if ( activeInfluences.length > 8 ) {
activeInfluences.length = 8;
}
for ( var i = 0, l = activeInfluences.length; i < l; i ++ ) {
var influence = activeInfluences[ i ];
morphInfluences[ i ] = influence[ 0 ];
if ( influence[ 0 ] !== 0 ) {
var attribute = geometry.morphAttributes[ influence[ 1 ] ];
geometry.addAttribute( 'morphTarget' + i, attribute );
} else {
geometry.removeAttribute( 'morphTarget' + i );
}
}
var uniforms = program.getUniforms();
if ( uniforms.morphTargetInfluences !== null ) {
_gl.uniform1fv( uniforms.morphTargetInfluences, morphInfluences );
}
updateBuffers = true;
}
if ( object instanceof THREE.Mesh ) {
renderMesh( material, geometry, object, program, updateBuffers );
} else if ( object instanceof THREE.Line ) {
renderLine( material, geometry, object, program, updateBuffers );
} else if ( object instanceof THREE.PointCloud ) {
renderPointCloud( material, geometry, object, program, updateBuffers );
}
};
function renderMesh( material, geometry, object, program, updateBuffers ) {
var mode = _gl.TRIANGLES;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册