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

WebGLRenderer: ImmediateRenderObject code clean up.

上级 e24a45dd
......@@ -669,18 +669,18 @@ THREE.WebGLRenderer = function ( parameters ) {
state.initAttributes();
var objectProperties = properties.get( object );
var buffers = properties.get( object );
if ( object.hasPositions && ! objectProperties.__webglVertexBuffer ) objectProperties.__webglVertexBuffer = _gl.createBuffer();
if ( object.hasNormals && ! objectProperties.__webglNormalBuffer ) objectProperties.__webglNormalBuffer = _gl.createBuffer();
if ( object.hasUvs && ! objectProperties.__webglUvBuffer ) objectProperties.__webglUvBuffer = _gl.createBuffer();
if ( object.hasColors && ! objectProperties.__webglColorBuffer ) objectProperties.__webglColorBuffer = _gl.createBuffer();
if ( object.hasPositions && ! buffers.position ) buffers.position = _gl.createBuffer();
if ( object.hasNormals && ! buffers.normal ) buffers.normal = _gl.createBuffer();
if ( object.hasUvs && ! buffers.uv ) buffers.uv = _gl.createBuffer();
if ( object.hasColors && ! buffers.color ) buffers.color = _gl.createBuffer();
var attributes = program.getAttributes();
if ( object.hasPositions ) {
_gl.bindBuffer( _gl.ARRAY_BUFFER, objectProperties.__webglVertexBuffer );
_gl.bindBuffer( _gl.ARRAY_BUFFER, buffers.position );
_gl.bufferData( _gl.ARRAY_BUFFER, object.positionArray, _gl.DYNAMIC_DRAW );
state.enableAttribute( attributes.position );
......@@ -690,7 +690,7 @@ THREE.WebGLRenderer = function ( parameters ) {
if ( object.hasNormals ) {
_gl.bindBuffer( _gl.ARRAY_BUFFER, objectProperties.__webglNormalBuffer );
_gl.bindBuffer( _gl.ARRAY_BUFFER, buffers.normal );
if ( material instanceof THREE.MeshPhongMaterial === false && material.shading === THREE.FlatShading ) {
......@@ -745,7 +745,7 @@ THREE.WebGLRenderer = function ( parameters ) {
if ( object.hasUvs && material.map ) {
_gl.bindBuffer( _gl.ARRAY_BUFFER, objectProperties.__webglUvBuffer );
_gl.bindBuffer( _gl.ARRAY_BUFFER, buffers.uv );
_gl.bufferData( _gl.ARRAY_BUFFER, object.uvArray, _gl.DYNAMIC_DRAW );
state.enableAttribute( attributes.uv );
......@@ -756,7 +756,7 @@ THREE.WebGLRenderer = function ( parameters ) {
if ( object.hasColors && material.vertexColors !== THREE.NoColors ) {
_gl.bindBuffer( _gl.ARRAY_BUFFER, objectProperties.__webglColorBuffer );
_gl.bindBuffer( _gl.ARRAY_BUFFER, buffers.color );
_gl.bufferData( _gl.ARRAY_BUFFER, object.colorArray, _gl.DYNAMIC_DRAW );
state.enableAttribute( attributes.color );
......@@ -1597,13 +1597,13 @@ THREE.WebGLRenderer = function ( parameters ) {
state.setBlending( THREE.NoBlending );
renderObjects( opaqueObjects, camera, lights, fog, null );
renderObjectsImmediate( opaqueImmediateObjects, camera, lights, fog, null );
renderObjects( opaqueObjects, camera, lights, fog );
renderObjectsImmediate( opaqueImmediateObjects, camera, lights, fog );
// transparent pass (back-to-front order)
renderObjects( transparentObjects, camera, lights, fog, null );
renderObjectsImmediate( transparentImmediateObjects, camera, lights, fog, null );
renderObjects( transparentObjects, camera, lights, fog );
renderObjectsImmediate( transparentImmediateObjects, camera, lights, fog );
}
......@@ -1739,7 +1739,7 @@ THREE.WebGLRenderer = function ( parameters ) {
setupMatrices( object, camera );
if ( overrideMaterial === null ) material = object.material;
if ( overrideMaterial === undefined ) material = object.material;
_this.renderBufferDirect( camera, lights, fog, material, object );
......@@ -1757,33 +1757,23 @@ THREE.WebGLRenderer = function ( parameters ) {
setupMatrices( object, camera );
if ( object.visible === true ) {
if ( overrideMaterial === undefined ) material = object.material;
if ( overrideMaterial === null ) material = object.material;
setMaterial( material );
_this.renderImmediateObject( camera, lights, fog, material, object );
var program = setProgram( camera, lights, fog, material, object );
}
}
}
this.renderImmediateObject = function ( camera, lights, fog, material, object ) {
setMaterial( material );
var program = setProgram( camera, lights, fog, material, object );
_currentGeometryProgram = '';
_currentGeometryProgram = '';
object.render( function ( object ) {
object.render( function ( object ) {
_this.renderBufferImmediate( object, program, material );
_this.renderBufferImmediate( object, program, material );
} );
} );
}
};
}
// Materials
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册