/** * @author mrdoob / http://mrdoob.com/ */ function WebGLObjects( gl, geometries, attributes, info ) { var updateList = {}; function update( object ) { var frame = info.render.frame; var geometry = object.geometry; var buffergeometry = geometries.get( object, geometry ); // Update once per frame if ( updateList[ buffergeometry.id ] !== frame ) { if ( geometry.isGeometry ) { buffergeometry.updateFromObject( object ); } geometries.update( buffergeometry ); updateList[ buffergeometry.id ] = frame; } if ( object.isInstancedMesh ) { attributes.update( object.instanceMatrix, gl.ARRAY_BUFFER ); attributes.update( object.instanceNormalMatrix, gl.ARRAY_BUFFER ); } return buffergeometry; } function dispose() { updateList = {}; } return { update: update, dispose: dispose }; } export { WebGLObjects };