( scene, object, geometry )
| 21546 | } |
| 21547 | |
| 21548 | function initGeometryGroups( scene, object, geometry ) { |
| 21549 | |
| 21550 | var material = object.material, addBuffers = false; |
| 21551 | |
| 21552 | if ( geometryGroups[ geometry.id ] === undefined || geometry.groupsNeedUpdate === true ) { |
| 21553 | |
| 21554 | delete _webglObjects[ object.id ]; |
| 21555 | |
| 21556 | geometryGroups[ geometry.id ] = makeGroups( geometry, material instanceof THREE.MeshFaceMaterial ); |
| 21557 | |
| 21558 | geometry.groupsNeedUpdate = false; |
| 21559 | |
| 21560 | } |
| 21561 | |
| 21562 | var geometryGroupsList = geometryGroups[ geometry.id ]; |
| 21563 | |
| 21564 | // create separate VBOs per geometry chunk |
| 21565 | |
| 21566 | for ( var i = 0, il = geometryGroupsList.length; i < il; i ++ ) { |
| 21567 | |
| 21568 | var geometryGroup = geometryGroupsList[ i ]; |
| 21569 | |
| 21570 | // initialise VBO on the first access |
| 21571 | |
| 21572 | if ( geometryGroup.__webglVertexBuffer === undefined ) { |
| 21573 | |
| 21574 | createMeshBuffers( geometryGroup ); |
| 21575 | initMeshBuffers( geometryGroup, object ); |
| 21576 | |
| 21577 | geometry.verticesNeedUpdate = true; |
| 21578 | geometry.morphTargetsNeedUpdate = true; |
| 21579 | geometry.elementsNeedUpdate = true; |
| 21580 | geometry.uvsNeedUpdate = true; |
| 21581 | geometry.normalsNeedUpdate = true; |
| 21582 | geometry.tangentsNeedUpdate = true; |
| 21583 | geometry.colorsNeedUpdate = true; |
| 21584 | |
| 21585 | addBuffers = true; |
| 21586 | |
| 21587 | } else { |
| 21588 | |
| 21589 | addBuffers = false; |
| 21590 | |
| 21591 | } |
| 21592 | |
| 21593 | if ( addBuffers || object.__webglActive === undefined ) { |
| 21594 | |
| 21595 | addBuffer( _webglObjects, geometryGroup, object ); |
| 21596 | |
| 21597 | } |
| 21598 | |
| 21599 | } |
| 21600 | |
| 21601 | object.__webglActive = true; |
| 21602 | |
| 21603 | } |
| 21604 | |
| 21605 | function addBuffer( objlist, buffer, object ) { |
no test coverage detected