diff --git a/projects/first_scene/src/main.cpp b/projects/first_scene/src/main.cpp index 69fe5bb3dd5412cfda6e03f71434cb552651ee6e..8f8fbb18a7882eae600b8db4a41ca97ad9884077 100644 --- a/projects/first_scene/src/main.cpp +++ b/projects/first_scene/src/main.cpp @@ -43,7 +43,7 @@ int main(int argc, const char** argv) { vkcv::asset::Scene scene; - const char* path = argc > 1 ? argv[1] : "resources/Cutlery/cutlerySzene.gltf"; + const char* path = argc > 1 ? argv[1] : "resources/Sponza/Sponza.gltf"; int result = vkcv::asset::loadScene(path, scene); if (result == 1) { @@ -56,7 +56,7 @@ int main(int argc, const char** argv) { assert(!scene.vertexGroups.empty()); std::vector<uint8_t> vBuffers; - std::vector<uint8_t> iBuffers; + std::vector<std::vector<uint8_t>> iBuffers; //vBuffers.reserve(scene.vertexGroups.size()); //iBuffers.reserve(scene.vertexGroups.size()); @@ -80,7 +80,7 @@ int main(int argc, const char** argv) { vkcv::BufferMemoryType::DEVICE_LOCAL ); indexBuffer.fill(scene.vertexGroups[i].indexBuffer.data);*/ - iBuffers.insert(iBuffers.end(), scene.vertexGroups[i].indexBuffer.data.begin(),scene.vertexGroups[i].indexBuffer.data.end()); + iBuffers.push_back(scene.vertexGroups[i].indexBuffer.data); auto& attributes = scene.vertexGroups[i].vertexBuffer.attributes; @@ -96,12 +96,13 @@ int main(int argc, const char** argv) { ); vertexBuffer.fill(vBuffers); - auto indexBuffer = core.createBuffer<uint8_t>( - vkcv::BufferType::INDEX, - iBuffers.size(), - vkcv::BufferMemoryType::DEVICE_LOCAL - ); - indexBuffer.fill(iBuffers); + std::vector<vkcv::Buffer<uint8_t>> indexBuffers; + for (const auto& dataBuffer : iBuffers) { + indexBuffers.push_back(core.createBuffer<uint8_t>( + vkcv::BufferType::INDEX, + dataBuffer.size())); + indexBuffers.back().fill(dataBuffer); + } for (int m = 0; m < scene.vertexGroups.size(); m++){ for (int k = 0; k < scene.vertexGroups[m].vertexBuffer.attributes.size(); k++){ @@ -184,7 +185,7 @@ int main(int argc, const char** argv) { std::vector<vkcv::DrawcallInfo> drawcalls; for(int l = 0; l < scene.vertexGroups.size(); l++){ - vkcv::Mesh renderMesh(vertexBufferBindings[l], indexBuffer.getVulkanHandle(), scene.vertexGroups[l].numIndices); + vkcv::Mesh renderMesh(vertexBufferBindings[l], indexBuffers[l].getVulkanHandle(), scene.vertexGroups[l].numIndices); drawcalls.push_back(vkcv::DrawcallInfo(renderMesh, {descriptorUsage})); }