WebGLObjects.js 885 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  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. attributes.update( object.instanceNormalMatrix, gl.ARRAY_BUFFER );
  21. }
  22. return buffergeometry;
  23. }
  24. function dispose() {
  25. updateList = {};
  26. }
  27. return {
  28. update: update,
  29. dispose: dispose
  30. };
  31. }
  32. export { WebGLObjects };