| 80 | } |
| 81 | |
| 82 | int decodeBufferView( |
| 83 | void* data, |
| 84 | const std::span<const std::byte>& buffer, |
| 85 | const ExtensionBufferViewExtMeshoptCompression& meshOpt) { |
| 86 | if (meshOpt.mode == |
| 87 | ExtensionBufferViewExtMeshoptCompression::Mode::ATTRIBUTES) { |
| 88 | return meshopt_decodeVertexBuffer( |
| 89 | data, |
| 90 | static_cast<size_t>(meshOpt.count), |
| 91 | static_cast<size_t>(meshOpt.byteStride), |
| 92 | reinterpret_cast<const unsigned char*>(buffer.data()), |
| 93 | buffer.size()); |
| 94 | } else { |
| 95 | if (meshOpt.byteStride == sizeof(std::uint16_t)) { |
| 96 | return decodeIndices( |
| 97 | reinterpret_cast<std::uint16_t*>(data), |
| 98 | buffer, |
| 99 | meshOpt); |
| 100 | } else if (meshOpt.byteStride == sizeof(std::uint32_t)) { |
| 101 | return decodeIndices( |
| 102 | reinterpret_cast<std::uint32_t*>(data), |
| 103 | buffer, |
| 104 | meshOpt); |
| 105 | } else { |
| 106 | return -1; |
| 107 | } |
| 108 | } |
| 109 | } |
| 110 | } // namespace |
| 111 | |
| 112 | void decodeMeshOpt(Model& model, CesiumGltfReader::GltfReaderResult& readGltf) { |
no test coverage detected