diff --git a/plugins/draco/io/DracoReader.cpp b/plugins/draco/io/DracoReader.cpp index 7cab73d528..7a6474a82d 100644 --- a/plugins/draco/io/DracoReader.cpp +++ b/plugins/draco/io/DracoReader.cpp @@ -242,7 +242,7 @@ point_count_t DracoReader::read(PointViewPtr view, point_count_t count) { for (auto& dim: m_dimensions) { - const uint8_t *src = dim.attr->GetAddressOfMappedIndex(draco::PointIndex(numRead)) + + const uint8_t *src = dim.attr->GetAddressOfMappedIndex(draco::PointIndex((uint32_t)numRead)) + draco::DataTypeLength(dim.attr->data_type()) * dim.attNum; view->setField(dim.pdalId, dim.pdalType, id, src); } diff --git a/plugins/draco/io/DracoWriter.cpp b/plugins/draco/io/DracoWriter.cpp index 655d4a5fd3..715ea536ea 100644 --- a/plugins/draco/io/DracoWriter.cpp +++ b/plugins/draco/io/DracoWriter.cpp @@ -332,17 +332,17 @@ void DracoWriter::initPointCloud(point_count_t size) void DracoWriter::addPoint(DimensionInfo dim, PointRef &point, PointId idx) { - const auto pointId = draco::PointIndex(idx); + const auto pointId = draco::PointIndex((uint32_t)idx); //find data type and create buffer Dimension::Type dataType = dim.pdalDims[0].m_type; size_t size = Dimension::size(dataType) * dim.pdalDims.size(); - char buffer [size]; + std::vector buffer(size, 0); //fill buffer - point.getPackedData(dim.pdalDims, buffer); + point.getPackedData(dim.pdalDims, buffer.data()); //add to draco pointcloud draco::PointAttribute *const att = m_pc->attribute(dim.attId); - att->SetAttributeValue(att->mapped_index(pointId), &buffer); + att->SetAttributeValue(att->mapped_index(pointId), buffer.data()); } void DracoWriter::write(const PointViewPtr view)