diff --git a/NanoVDBLoader.cpp b/NanoVDBLoader.cpp index 1d07216c..2b1f8d79 100644 --- a/NanoVDBLoader.cpp +++ b/NanoVDBLoader.cpp @@ -8,8 +8,13 @@ #include #include -bool LoadNanoVDB(const char* filePath, NanoVDBData& outData, ID3D12GraphicsCommandList* cmdList) { +bool LoadNanoVDB(const char* filePath, NanoVDBData& outData, ID3D12GraphicsCommandList* cmdList, ID3D12CommandAllocator* cmdAlloc) { try { + if (cmdAlloc && cmdList) { + cmdAlloc->Reset(); + cmdList->Reset(cmdAlloc, nullptr); + } + nanovdb::GridHandle gridHandle = nanovdb::io::readGrid(filePath); const uint64_t byteSize = gridHandle.buffer().bufferSize(); diff --git a/NanoVDBLoader.h b/NanoVDBLoader.h index a07af38f..d20650d7 100644 --- a/NanoVDBLoader.h +++ b/NanoVDBLoader.h @@ -10,6 +10,6 @@ struct NanoVDBData { uint64_t elementCount; }; -bool LoadNanoVDB(const char* filePath, NanoVDBData& outData, ID3D12GraphicsCommandList* cmdList = nullptr); +bool LoadNanoVDB(const char* filePath, NanoVDBData& outData, ID3D12GraphicsCommandList* cmdList, ID3D12CommandAllocator* cmdAlloc = nullptr); void FreeNanoVDB(NanoVDBData& data); diff --git a/main.cpp b/main.cpp index adf479a3..8a60ba04 100644 --- a/main.cpp +++ b/main.cpp @@ -17,26 +17,32 @@ LPCWSTR gWindowClassName = L"BattleFire"; void RunNanoVDBTest() { ID3D12GraphicsCommandList* commandList = GetCommandList(); + ID3D12CommandAllocator* commandAllocator = GetCommandAllocator(); const char* vdbFiles[] = { "Res/NanoVDB/bunny.nvdb" }; + NanoVDBData vdbData = {}; + for (int i = 0; i < sizeof(vdbFiles) / sizeof(vdbFiles[0]); i++) { const char* currentVdbFile = vdbFiles[i]; printf("[NanoVDB Test] Loading: %s\n", currentVdbFile); - NanoVDBData vdbData; - bool loadSuccess = LoadNanoVDB(currentVdbFile, vdbData, commandList); + bool loadSuccess = LoadNanoVDB(currentVdbFile, vdbData, commandList, commandAllocator); if (loadSuccess) { printf(" SUCCESS - %llu bytes, %llu elements\n", (unsigned long long)vdbData.byteSize, (unsigned long long)vdbData.elementCount); - FreeNanoVDB(vdbData); } else { printf(" FAILED\n"); } } printf("[NanoVDB Test] Done.\n"); + + FreeNanoVDB(vdbData); + + EndCommandList(); + WaitForCompletionOfCommandList(); } LRESULT CALLBACK WindowProc(HWND inHWND, UINT inMSG, WPARAM inWParam, LPARAM inLParam) {