SpiecsEngine
 
Loading...
Searching...
No Matches

◆ VulkanRenderPass()

Spices::VulkanRenderPass::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.

Parameters
[in]vulkanStateThe global VulkanState.
[in]passNameThe RenderPass's name.
[in]vulkanDeviceThe shared pointer of VulkanDevice.
[in]createInfoThe information helps to create a VkRenderPass.
[in]imageViewsAll attachments except swapchain image view that in used.
[in]layersThe max layers of all attachments.
[in]isUseSwapChianImageTrue if need append a swapchain image view.

CreateRenderPass.

Add SwapChian's image to local variable.

Instanced a VkFramebufferCreateInfo with default value.

In the first frame we use surface size instend viewport size.

FrameBuffer Attachments layers(the max one).

CreateFrameBuffer.

CreateRenderPass.

Add SwapChian's image to local variable.

Instanced a VkFramebufferCreateInfo with default value.

In the first frame we use surface size instend viewport size.

FrameBuffer Attachments layers(the max one).

CreateFrameBuffer.

Definition at line 13 of file VulkanRenderPass.cpp.

22 : VulkanObject(vulkanState)
23 , m_VulkanDevice(vulkanDevice)
24 {
26
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)
32
33 for (size_t i = 0; i < MaxFrameInFlight; i++)
34 {
38 std::vector<VkImageView> views = imageViews;
39
40 if (isUseSwapChianImage)
41 {
42 views.emplace(views.begin(), m_VulkanState.m_SwapChainImageViews[i]);
43 }
44
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();
53
57 if (isUseSwapChianImage || !SlateSystem::GetRegister())
58 {
59 framebufferInfo.width = m_VulkanDevice->GetSwapChainSupport().surfaceSize.width;
60 framebufferInfo.height = m_VulkanDevice->GetSwapChainSupport().surfaceSize.height;
61 }
62 else
63 {
64 framebufferInfo.width = static_cast<uint32_t>(SlateSystem::GetRegister()->GetViewPort()->GetPanelSize().x);
65 framebufferInfo.height = static_cast<uint32_t>(SlateSystem::GetRegister()->GetViewPort()->GetPanelSize().y);
66 }
67
71 framebufferInfo.layers = layers;
72
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)
78 }
79 }
#define SPICES_PROFILE_ZONE
#define VK_CHECK(expr)
Vulkan Check macro. Verify Vulkan API Effectiveness.
Definition VulkanUtils.h:68
static std::shared_ptr< SlateRegister > GetRegister()
Get slate register.
Definition SlateSystem.h:67
VulkanState & m_VulkanState
The global VulkanState Referenced from VulkanRenderBackend.
VulkanObject(VulkanState &vulkanState)
Constructor Function. Init member variables.
VkRenderPass m_RenderPass
The RenderPass this class mainly manage.
std::array< VkFramebuffer, MaxFrameInFlight > m_SwapChainFramebuffers
The FrameBuffers.
std::shared_ptr< VulkanDevice > m_VulkanDevice
The shared pointer of VulkanDevice.
constexpr uint32_t MaxFrameInFlight
Max In Flight Frame. 2 buffers are enough in this program.
Definition VulkanUtils.h:22
std::array< VkImageView, MaxFrameInFlight > m_SwapChainImageViews

References Spices::VulkanObject::VulkanObject(), and VulkanRenderPass().

Referenced by VulkanRenderPass().