diff --git a/NothinFancy/src/client/render/RenderEngine.cpp b/NothinFancy/src/client/render/RenderEngine.cpp index e2a84c5..eab5951 100644 --- a/NothinFancy/src/client/render/RenderEngine.cpp +++ b/NothinFancy/src/client/render/RenderEngine.cpp @@ -22,6 +22,7 @@ namespace nf::client::render { , m_swapchainImageFormat() , m_swapchainImages() , m_swapchainImageViews() + , m_swapchainFramebuffers() , m_pipelineLayoutOutput() , m_pipelineOutput() { @@ -359,9 +360,27 @@ namespace nf::client::render { if (vkCreateGraphicsPipelines(m_device, nullptr, 1, &pipelineCI, nullptr, &m_pipelineOutput) != VK_SUCCESS) NFError("Could not create graphics pipeline."); + + // TODO: For now, create swapchain framebuffers + m_swapchainFramebuffers.resize(m_swapchainImageViews.size()); + for (int i = 0; i < m_swapchainImageViews.size(); i++) { + VkFramebufferCreateInfo framebufferCI = { VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO }; + framebufferCI.renderPass = m_renderPassOutput; + framebufferCI.attachmentCount = 1; + framebufferCI.pAttachments = &m_swapchainImageViews[i]; + framebufferCI.width = m_display.width; + framebufferCI.height = m_display.height; + framebufferCI.layers = 1; + + if (vkCreateFramebuffer(m_device, &framebufferCI, nullptr, &m_swapchainFramebuffers[i]) != VK_SUCCESS) + NFError("Could not create framebuffer."); + } } RenderEngine::~RenderEngine() { + for (int i = 0; i < m_swapchainFramebuffers.size(); i++) + vkDestroyFramebuffer(m_device, m_swapchainFramebuffers[i], nullptr); + vkDestroyPipeline(m_device, m_pipelineOutput, nullptr); vkDestroyPipelineLayout(m_device, m_pipelineLayoutOutput, nullptr); vkDestroyRenderPass(m_device, m_renderPassOutput, nullptr); diff --git a/NothinFancy/src/client/render/RenderEngine.h b/NothinFancy/src/client/render/RenderEngine.h index 923fabe..2cc6631 100644 --- a/NothinFancy/src/client/render/RenderEngine.h +++ b/NothinFancy/src/client/render/RenderEngine.h @@ -36,6 +36,7 @@ namespace nf::client::render { VkFormat m_swapchainImageFormat; std::vector m_swapchainImages; std::vector m_swapchainImageViews; + std::vector m_swapchainFramebuffers; // Pipelines VkPipelineLayout m_pipelineLayoutOutput;