diff --git a/base/vulkanexamplebase.cpp b/base/vulkanexamplebase.cpp index 871858de..8873af6b 100644 --- a/base/vulkanexamplebase.cpp +++ b/base/vulkanexamplebase.cpp @@ -90,6 +90,15 @@ VkResult VulkanExampleBase::createInstance(bool enableValidation) return vkCreateInstance(&instanceCreateInfo, nullptr, &instance); } +void VulkanExampleBase::drawFrame() +{ + VulkanExampleBase::prepareFrame(); + submitInfo.commandBufferCount = 1; + submitInfo.pCommandBuffers = &drawCmdBuffers[currentBuffer]; + VK_CHECK_RESULT(vkQueueSubmit(queue, 1, &submitInfo, VK_NULL_HANDLE)); + VulkanExampleBase::submitFrame(); +} + std::string VulkanExampleBase::getWindowTitle() { std::string device(deviceProperties.deviceName); @@ -298,7 +307,7 @@ void VulkanExampleBase::renderLoop() break; } } - if (!IsIconic(window)) { + if (prepared && !IsIconic(window)) { renderFrame(); } } diff --git a/base/vulkanexamplebase.h b/base/vulkanexamplebase.h index e28efb10..5c38ea2f 100644 --- a/base/vulkanexamplebase.h +++ b/base/vulkanexamplebase.h @@ -319,6 +319,9 @@ public: // Pure virtual render function (override in derived class) virtual void render() = 0; + /** @brief (Virtual) Default image acquire and command buffer submission function */ + virtual void drawFrame(); + // Called when view change occurs // Can be overriden in derived class to e.g. update uniform buffers // Containing view dependant matrices