Implemented KRRenderPass::begin and KRRenderPass::end

This commit is contained in:
2022-03-27 21:56:45 -07:00
parent 2818deb0e3
commit 36f804e176
9 changed files with 52 additions and 30 deletions

View File

@@ -30,6 +30,7 @@
//
#include "KRRenderPass.h"
#include "KRSurface.h""
KRRenderPass::KRRenderPass(KRContext& context)
: KRContextObject(context)
@@ -114,4 +115,27 @@ void KRRenderPass::destroy(KRDevice &device)
vkDestroyRenderPass(device.m_logicalDevice, m_renderPass, nullptr);
m_renderPass = VK_NULL_HANDLE;
}
}
}
void KRRenderPass::begin(VkCommandBuffer& commandBuffer, KRSurface& surface, uint64_t frameIndex)
{
std::array<VkClearValue, 2> clearValues{};
clearValues[0].color = { {0.0f, 0.0f, 0.0f, 1.0f} };
clearValues[1].depthStencil = { 1.0f, 0 };
VkRenderPassBeginInfo renderPassInfo{};
renderPassInfo.sType = VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO;
renderPassInfo.renderPass = m_renderPass;
renderPassInfo.framebuffer = surface.m_swapChainFramebuffers[frameIndex % surface.m_swapChainFramebuffers.size()];
renderPassInfo.renderArea.offset = { 0, 0 };
renderPassInfo.renderArea.extent = surface.m_swapChainExtent;
renderPassInfo.clearValueCount = static_cast<uint32_t>(clearValues.size());
renderPassInfo.pClearValues = clearValues.data();
vkCmdBeginRenderPass(commandBuffer, &renderPassInfo, VK_SUBPASS_CONTENTS_INLINE);
}
void KRRenderPass::end(VkCommandBuffer& commandBuffer)
{
vkCmdEndRenderPass(commandBuffer);
}