diff options
| -rw-r--r-- | src/window.cpp | 58 |
1 files changed, 38 insertions, 20 deletions
diff --git a/src/window.cpp b/src/window.cpp index de1a6ea..406ccc5 100644 --- a/src/window.cpp +++ b/src/window.cpp @@ -1298,7 +1298,43 @@ void RecordCommandBuffer(VkCommandBuffer commandBuffer, uint32_t imageIndex) { throw "failed to begin recording command buffer"; } - // TODO there should be a RenderPass that sandwiches this somewhere + VkClearColorValue clearColor = {{0.0f, 0.0f, 0.0f, 1.0f}}; + VkClearDepthStencilValue clearDepth; + clearDepth.depth = 1.0; + clearDepth.stencil = 0; + VkClearValue clearValues[2] = { + VkClearValue { .color = clearColor }, + VkClearValue { .depthStencil = clearDepth }, + }; + + VkRenderPassBeginInfo renderPassInfo; + renderPassInfo.sType = VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO; + renderPassInfo.renderPass = renderRenderPass; + renderPassInfo.framebuffer = renderImageFramebuffers[imageIndex]; + renderPassInfo.renderArea.offset = {0, 0}; + renderPassInfo.renderArea.extent = extent; + renderPassInfo.clearValueCount = 2; + renderPassInfo.pClearValues = clearValues; + renderPassInfo.pNext = VK_NULL_HANDLE; + + vkCmdBeginRenderPass(commandBuffer, &renderPassInfo, VK_SUBPASS_CONTENTS_INLINE); + vkCmdBindPipeline(commandBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, graphicsPipeline); + + VkViewport viewport; + viewport.x = 0.0f; + viewport.y = 0.0f; + viewport.width = (float)extent.width; + viewport.height = (float)extent.height; + viewport.minDepth = 0.0f; + viewport.maxDepth = 1.0f; + + VkRect2D scissor; + scissor.offset = {0, 0}; + scissor.extent = extent; + + vkCmdSetViewport(commandBuffer, 0, 1, &viewport); + vkCmdSetScissor(commandBuffer, 0, 1, &scissor); + const uint64_t bindBucketCount = ECS_GetGrBinds_BucketCount(); for (long b = 0; b < bindBucketCount; ++b) { uint64_t itemCount; @@ -1321,33 +1357,15 @@ void RecordCommandBuffer(VkCommandBuffer commandBuffer, uint32_t imageIndex) { } // present pass - VkClearValue clearColor = {{{0.0f, 0.0f, 0.0f, 1.0f}}}; + vkCmdEndRenderPass(commandBuffer); - VkRenderPassBeginInfo renderPassInfo; - renderPassInfo.sType = VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO; renderPassInfo.renderPass = presentRenderPass; renderPassInfo.framebuffer = swapchainFramebuffers[imageIndex]; - renderPassInfo.renderArea.offset = {0, 0}; - renderPassInfo.renderArea.extent = extent; renderPassInfo.clearValueCount = 1; - renderPassInfo.pClearValues = &clearColor; - renderPassInfo.pNext = VK_NULL_HANDLE; vkCmdBeginRenderPass(commandBuffer, &renderPassInfo, VK_SUBPASS_CONTENTS_INLINE); vkCmdBindPipeline(commandBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, graphicsPipeline); - VkViewport viewport; - viewport.x = 0.0f; - viewport.y = 0.0f; - viewport.width = (float)extent.width; - viewport.height = (float)extent.height; - viewport.minDepth = 0.0f; - viewport.maxDepth = 1.0f; - - VkRect2D scissor; - scissor.offset = {0, 0}; - scissor.extent = extent; - vkCmdSetViewport(commandBuffer, 0, 1, &viewport); vkCmdSetScissor(commandBuffer, 0, 1, &scissor); // reminder that present.vert is a triangle |
