summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Bradley <jcb@pikum.xyz>2023-09-20 11:52:41 -0400
committerJonathan Bradley <jcb@pikum.xyz>2023-09-20 11:52:41 -0400
commitac9fa36a7b7888f47339d7ddead8b3d395cc3933 (patch)
tree2b510cf11c203484dafedf06ded0a85442aba7bc
parente966fc36c684de7e1f1477cfdd7d50c2da374bad (diff)
sandwich render pass
-rw-r--r--src/window.cpp58
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