2
3
4
5
9#include "Slate/Imgui/ViewPort/ImguiViewport.h"
15 const std::string& passName ,
17 VkRenderPassCreateInfo& createInfo ,
18 std::vector<VkImageView>& imageViews ,
20 bool isUseSwapChianImage
28
29
30 VK_CHECK(vkCreateRenderPass(m_VulkanState.m_Device, &createInfo,
nullptr, &m_RenderPass));
31 DEBUGUTILS_SETOBJECTNAME(VK_OBJECT_TYPE_RENDER_PASS,
reinterpret_cast<uint64_t>(m_RenderPass), m_VulkanState.m_Device, passName)
33 for (size_t i = 0; i < MaxFrameInFlight; i++)
36
37
38 std::vector<VkImageView> views = imageViews;
40 if (isUseSwapChianImage)
42 views.emplace(views.begin(), m_VulkanState.m_SwapChainImageViews[i]);
46
47
48 VkFramebufferCreateInfo framebufferInfo{};
49 framebufferInfo.sType = VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO;
50 framebufferInfo.renderPass = m_RenderPass;
51 framebufferInfo.attachmentCount =
static_cast<uint32_t>(views.size());
52 framebufferInfo.pAttachments = views.data();
55
56
57 if (isUseSwapChianImage || !SlateSystem::GetRegister())
59 framebufferInfo.width = m_VulkanDevice->GetSwapChainSupport().surfaceSize.width;
60 framebufferInfo.height = m_VulkanDevice->GetSwapChainSupport().surfaceSize.height;
64 framebufferInfo.width =
static_cast<uint32_t>(SlateSystem::GetRegister()->GetViewPort()->GetPanelSize().x);
65 framebufferInfo.height =
static_cast<uint32_t>(SlateSystem::GetRegister()->GetViewPort()->GetPanelSize().y);
69
70
71 framebufferInfo.layers = layers;
74
75
76 VK_CHECK(vkCreateFramebuffer(m_VulkanState.m_Device, &framebufferInfo,
nullptr, &m_SwapChainFramebuffers[i]));
77 DEBUGUTILS_SETOBJECTNAME(VK_OBJECT_TYPE_FRAMEBUFFER,
reinterpret_cast<uint64_t>(m_SwapChainFramebuffers[i]), m_VulkanState.m_Device, passName)
86
87
90 vkDestroyFramebuffer(m_VulkanState.m_Device, m_SwapChainFramebuffers[i],
nullptr);
91 m_SwapChainFramebuffers[i] =
nullptr;
95
96
97 vkDestroyRenderPass(m_VulkanState.m_Device, m_RenderPass,
nullptr);
98 m_RenderPass =
nullptr;
#define SPICES_PROFILE_ZONE
#define VK_CHECK(expr)
Vulkan Check macro. Verify Vulkan API Effectiveness.
VulkanInstance Class. This class defines the VulkanDevice behave. This class is just a wrapper of vkd...
VulkanObject(VulkanState &vulkanState)
Constructor Function. Init member variables.
VulkanObject Class. This class defines the basic behaves of VulkanObject. When we create an new Vulka...
virtual ~VulkanRenderPass() override
Destructor Function.
VulkanRenderPass(VulkanState &vulkanState, const std::string &passName, std::shared_ptr< VulkanDevice > vulkanDevice, VkRenderPassCreateInfo &createInfo, std::vector< VkImageView > &imageViews, uint32_t layers, bool isUseSwapChianImage)
Constructor Function. Create VkRenderPass and VkFramebuffer.
VulkanRenderPass Class. This class defines the VulkanRenderPass behaves. This class is just a wrapper...
constexpr uint32_t MaxFrameInFlight
Max In Flight Frame. 2 buffers are enough in this program.
This struct contains all Vulkan object in used global.