diff --git a/src/Engine/Graphics/VertexData.cpp b/src/Engine/Graphics/VertexData.cpp index ab39581..896297e 100644 --- a/src/Engine/Graphics/VertexData.cpp +++ b/src/Engine/Graphics/VertexData.cpp @@ -141,8 +141,7 @@ void VertexData::createDescriptors() { void VertexData::loadMesh(MeshId id, Array loadedIndices, Array loadedMeshlets) { std::unique_lock l(vertexDataLock); uint32 numChunks = (loadedMeshlets.size() + 2047) / 2048; - for(uint32 chunkIdx = 0; chunkIdx < numChunks; ++chunkIdx) - { + for (uint32 chunkIdx = 0; chunkIdx < numChunks; ++chunkIdx) { uint32 meshletOffset = (uint32)meshlets.size(); AABB meshAABB; uint32 numMeshlets = 0; @@ -174,7 +173,6 @@ void VertexData::loadMesh(MeshId id, Array loadedIndices, Array .numMeshlets = numMeshlets, .meshletOffset = meshletOffset, }); - } // todo: in case of a index split for 16 bit, do something here meshData[id][0].firstIndex = (uint32)indices.size(); @@ -183,6 +181,14 @@ void VertexData::loadMesh(MeshId id, Array loadedIndices, Array std::memcpy(indices.data() + meshData[id][0].firstIndex, loadedIndices.data(), loadedIndices.size() * sizeof(uint32)); } +void VertexData::updateMesh(MeshId id, Array indices, Array meshlets) { + uint32 numMeshlets = 0; + for (const auto& dat : meshData[id]) { + numMeshlets += dat.numMeshlets; + } + int32 difference = meshlets.size() - numMeshlets; +} + void VertexData::commitMeshes() { indexBuffer = graphics->createIndexBuffer(IndexBufferCreateInfo{ .sourceData = diff --git a/src/Engine/Graphics/VertexData.h b/src/Engine/Graphics/VertexData.h index e615674..243fe84 100644 --- a/src/Engine/Graphics/VertexData.h +++ b/src/Engine/Graphics/VertexData.h @@ -58,6 +58,7 @@ class VertexData { void updateMesh(uint32 meshletOffset, PMesh mesh, Component::Transform& transform); virtual void createDescriptors(); void loadMesh(MeshId id, Array indices, Array meshlets); + void updateMesh(MeshId id, Array indices, Array meshlets); void commitMeshes(); MeshId allocateVertexData(uint64 numVertices); uint64 getMeshOffset(MeshId id) const { return meshOffsets[id]; }