WebGLGeometries.js 976 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. /**
  2. * @author mrdoob / http://mrdoob.com/
  3. */
  4. THREE.WebGLGeometries = function ( gl, info ) {
  5. var geometries = {};
  6. this.get = function ( object ) {
  7. var geometry = object.geometry;
  8. if ( geometries[ geometry.id ] !== undefined ) {
  9. return geometries[ geometry.id ];
  10. }
  11. geometry.addEventListener( 'dispose', onGeometryDispose );
  12. if ( geometry instanceof THREE.BufferGeometry ) {
  13. geometries[ geometry.id ] = geometry;
  14. } else if ( geometry instanceof THREE.Geometry ) {
  15. if ( object._bufferGeometry === undefined ) {
  16. object._bufferGeometry = new THREE.BufferGeometry().setFromObject( object );
  17. }
  18. geometries[ geometry.id ] = object._bufferGeometry;
  19. }
  20. info.memory.geometries ++;
  21. return geometries[ geometry.id ];
  22. };
  23. function onGeometryDispose( event ) {
  24. var geometry = event.target;
  25. geometry.removeEventListener( 'dispose', onGeometryDispose );
  26. delete geometries[ geometry.id ];
  27. info.memory.geometries --;
  28. }
  29. };