getAccessorByteStride.js 964 B

1234567891011121314151617181920212223242526272829
  1. import numberOfComponentsForType from "./numberOfComponentsForType.js";
  2. import ComponentDatatype from "../../Core/ComponentDatatype.js";
  3. import defined from "../../Core/defined.js";
  4. /**
  5. * Returns the byte stride of the provided accessor.
  6. * If the byteStride is 0, it is calculated based on type and componentType
  7. *
  8. * @param {object} gltf A javascript object containing a glTF asset.
  9. * @param {object} accessor The accessor.
  10. * @returns {number} The byte stride of the accessor.
  11. *
  12. * @private
  13. */
  14. function getAccessorByteStride(gltf, accessor) {
  15. const bufferViewId = accessor.bufferView;
  16. if (defined(bufferViewId)) {
  17. const bufferView = gltf.bufferViews[bufferViewId];
  18. if (defined(bufferView.byteStride) && bufferView.byteStride > 0) {
  19. return bufferView.byteStride;
  20. }
  21. }
  22. return (
  23. ComponentDatatype.getSizeInBytes(accessor.componentType) *
  24. numberOfComponentsForType(accessor.type)
  25. );
  26. }
  27. export default getAccessorByteStride;