diff --git a/texturearray/texturearray.cpp b/texturearray/texturearray.cpp index 17dba3ae..de09104c 100644 --- a/texturearray/texturearray.cpp +++ b/texturearray/texturearray.cpp @@ -83,8 +83,8 @@ public: zoom = -15.0f; rotationSpeed = 0.25f; rotation = { -15.0f, 35.0f, 0.0f }; + enableTextOverlay = true; title = "Vulkan Example - Texture arrays"; - srand(time(NULL)); } ~VulkanExample() @@ -336,8 +336,6 @@ public: renderPassBeginInfo.clearValueCount = 2; renderPassBeginInfo.pClearValues = clearValues; - VkResult err; - for (int32_t i = 0; i < drawCmdBuffers.size(); ++i) { // Set target frame buffer @@ -368,27 +366,6 @@ public: } } - void draw() - { - // Get next image in the swap chain (back/front buffer) - VK_CHECK_RESULT(swapChain.acquireNextImage(semaphores.presentComplete, ¤tBuffer)); - - submitPostPresentBarrier(swapChain.buffers[currentBuffer].image); - - // Command buffer to be sumitted to the queue - submitInfo.commandBufferCount = 1; - submitInfo.pCommandBuffers = &drawCmdBuffers[currentBuffer]; - - // Submit to queue - VK_CHECK_RESULT(vkQueueSubmit(queue, 1, &submitInfo, VK_NULL_HANDLE)); - - submitPrePresentBarrier(swapChain.buffers[currentBuffer].image); - - VK_CHECK_RESULT(swapChain.queuePresent(queue, currentBuffer, semaphores.renderComplete)); - - VK_CHECK_RESULT(vkQueueWaitIdle(queue)); - } - // Setup vertices for a single uv-mapped quad void generateQuad() { @@ -620,12 +597,12 @@ public: { uboVS.instance = new UboInstanceData[layerCount]; - VkResult err; uint32_t uboSize = sizeof(uboVS.matrices) + (layerCount * sizeof(UboInstanceData)); // Vertex shader uniform buffer block createBuffer( VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT, + VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT, uboSize, &uboVS, &uniformData.vertexShader.buffer, @@ -676,6 +653,17 @@ public: vkUnmapMemory(device, uniformData.vertexShader.memory); } + void draw() + { + VulkanExampleBase::prepareFrame(); + + submitInfo.commandBufferCount = 1; + submitInfo.pCommandBuffers = &drawCmdBuffers[currentBuffer]; + VK_CHECK_RESULT(vkQueueSubmit(queue, 1, &submitInfo, VK_NULL_HANDLE)); + + VulkanExampleBase::submitFrame(); + } + void prepare() { VulkanExampleBase::prepare(); @@ -695,9 +683,7 @@ public: { if (!prepared) return; - vkDeviceWaitIdle(device); draw(); - vkDeviceWaitIdle(device); } virtual void viewChanged()