WebGLObjects.js 815 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. /**
  2. * @author mrdoob / http://mrdoob.com/
  3. */
  4. function WebGLObjects( gl, geometries, attributes, info ) {
  5. var updateList = {};
  6. function update( object ) {
  7. var frame = info.render.frame;
  8. var geometry = object.geometry;
  9. var buffergeometry = geometries.get( object, geometry );
  10. // Update once per frame
  11. if ( updateList[ buffergeometry.id ] !== frame ) {
  12. if ( geometry.isGeometry ) {
  13. buffergeometry.updateFromObject( object );
  14. }
  15. geometries.update( buffergeometry );
  16. updateList[ buffergeometry.id ] = frame;
  17. }
  18. if ( object.isInstancedMesh ) {
  19. attributes.update( object.instanceMatrix, gl.ARRAY_BUFFER );
  20. }
  21. return buffergeometry;
  22. }
  23. function dispose() {
  24. updateList = {};
  25. }
  26. return {
  27. update: update,
  28. dispose: dispose
  29. };
  30. }
  31. export { WebGLObjects };