From c2b3bbec51846c80263ad947ca01fd13f8243801 Mon Sep 17 00:00:00 2001 From: ink-soul Date: Tue, 16 Apr 2024 14:45:19 +0800 Subject: [PATCH] ready for remove swapchain --- base/vulkanexamplebase.cpp | 4 ++-- data/output/video/device0/result.mp4 | Bin 49799 -> 0 bytes src/render/render.cpp | 16 ++++++++++------ src/render/render.h | 10 +++++----- 4 files changed, 17 insertions(+), 13 deletions(-) delete mode 100644 data/output/video/device0/result.mp4 diff --git a/base/vulkanexamplebase.cpp b/base/vulkanexamplebase.cpp index b724e79..b11dea9 100644 --- a/base/vulkanexamplebase.cpp +++ b/base/vulkanexamplebase.cpp @@ -110,8 +110,8 @@ void VulkanExampleBase::prepare() /* Swapchain */ - initSwapchain(); - setupSwapChain(); + //initSwapchain(); + //setupSwapChain(); #if defined(VK_USE_PLATFORM_ANDROID_KHR) width = swapChain.extent.width; diff --git a/data/output/video/device0/result.mp4 b/data/output/video/device0/result.mp4 deleted file mode 100644 index bf0c6a439cbfdd9bbbf5f5c76ec18aedb0042681..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49799 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 diff --git a/src/render/render.cpp b/src/render/render.cpp index e9c0f13..1dcb3e0 100644 --- a/src/render/render.cpp +++ b/src/render/render.cpp @@ -1992,12 +1992,14 @@ PlumageRender::PlumageRender() outputImageSequence(); - + imageSequenceToVideo(); VK_CHECK_RESULT(vkWaitForFences(device, 1, &waitFences[frameIndex], VK_TRUE, UINT64_MAX)); - imageSequenceToVideo(); + VK_CHECK_RESULT(vkResetFences(device, 1, &waitFences[frameIndex])); + + /* VkResult acquire = swapChain.acquireNextImage(presentCompleteSemaphores[frameIndex], ¤tBuffer); if ((acquire == VK_ERROR_OUT_OF_DATE_KHR) || (acquire == VK_SUBOPTIMAL_KHR)) { windowResize(); @@ -2007,6 +2009,7 @@ PlumageRender::PlumageRender() } + */ // Update UBOs updateUniformBuffers(); @@ -2015,18 +2018,19 @@ PlumageRender::PlumageRender() memcpy(currentUB.params.mapped, &shaderData, sizeof(shaderData)); memcpy(currentUB.skybox.mapped, &shaderDataSkybox, sizeof(shaderDataSkybox)); + const VkPipelineStageFlags waitDstStageMask = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT; VkSubmitInfo submitInfo{}; submitInfo.sType = VK_STRUCTURE_TYPE_SUBMIT_INFO; submitInfo.pWaitDstStageMask = &waitDstStageMask; - submitInfo.pWaitSemaphores = &presentCompleteSemaphores[frameIndex]; - submitInfo.waitSemaphoreCount = 1; + //submitInfo.pWaitSemaphores = &presentCompleteSemaphores[frameIndex]; + //submitInfo.waitSemaphoreCount = 1; submitInfo.pSignalSemaphores = &renderCompleteSemaphores[frameIndex]; submitInfo.signalSemaphoreCount = 1; submitInfo.pCommandBuffers = &commandBuffers[currentBuffer]; submitInfo.commandBufferCount = 1; VK_CHECK_RESULT(vkQueueSubmit(queue, 1, &submitInfo, waitFences[frameIndex])); - + //显示队列 /* VkResult present = swapChain.queuePresent(queue, currentBuffer, renderCompleteSemaphores[frameIndex]); @@ -2308,7 +2312,7 @@ PlumageRender::PlumageRender() for (int32_t i = 0; i < __argc; i++) { PlumageRender::args.push_back(__argv[i]); }; plumageRender = new PlumageRender(); plumageRender->initVulkan(); - plumageRender->setupWindow(hInstance, WndProc); + //plumageRender->setupWindow(hInstance, WndProc); plumageRender->prepare(); plumageRender->renderLoop(); delete(plumageRender); diff --git a/src/render/render.h b/src/render/render.h index f52fcf6..03b9791 100644 --- a/src/render/render.h +++ b/src/render/render.h @@ -139,9 +139,9 @@ public: struct FilePath { //model path - std::string glTFModelFilePath = getAssetPath() + "models/sauvage_perfume.glb"; - std::string modelVertShaderPath = getAssetPath() + "buster_drone/shaders/glsl/mesh.vert.spv"; - std::string modelFragShaderPath = getAssetPath() + "buster_drone/shaders/glsl/mesh.frag.spv"; + std::string glTFModelFilePath = getAssetPath() + "models/DamagedHelmet/DamagedHelmet.gltf"; + //std::string modelVertShaderPath = getAssetPath() + "buster_drone/shaders/glsl/mesh.vert.spv"; + //std::string modelFragShaderPath = getAssetPath() + "buster_drone/shaders/glsl/mesh.frag.spv"; //ui std::string uiVertShaderPath = getAssetPath() + "shaders/ui.vert.spv"; @@ -152,7 +152,7 @@ public: std::string skyboxVertShaderPath = getAssetPath() + "shaders/skybox.vert.spv"; std::string skyboxFragShaderPath = getAssetPath() + "shaders/skybox.frag.spv"; - std::string iblTexturesFilePath = getAssetPath() + "textures/hdr/gcanyon_cube.ktx"; + //std::string iblTexturesFilePath = getAssetPath() + "textures/hdr/gcanyon_cube.ktx"; //tonemapping std::string tonemappingVertShaderPath = getAssetPath() + "buster_drone/shaders/glsl/genbrdflut.vert.spv"; std::string tonemappingEnableFragShaderPath = getAssetPath() + "buster_drone/shaders/glsl/tonemapping_enable.frag.spv"; @@ -169,7 +169,7 @@ public: std::string brdfVertShaderPath = getAssetPath() + "shaders/genbrdflut.vert.spv"; std::string brdfFragShaderPath = getAssetPath() + "shaders/genbrdflut.frag.spv"; // environment map texture - std::string envMapFilePath = getAssetPath() + "environments/kloofendal_43d_clear_puresky_hdr16f_cube.ktx"; + std::string envMapFilePath = getAssetPath() + "environments/metro_noord_4k_hdr16f_cube.ktx"; std::string emptyEnvmapFilePath = getAssetPath() + "textures/empty.ktx"; // pbr shader std::string pbrVertShaderPath = getAssetPath() + "shaders/pbr.vert.spv";