帧缓冲
下一步就是修改创建帧缓冲的代码,绑定深度图像作为帧缓冲的深度附着。在createFramebuffers函数中指定深度图像视图对象作为帧缓冲的第二个附着:
std::array<VkImageView, 2> attachments = {
swapChainImageViews[i],
depthImageView
};
VkFramebufferCreateInfo framebufferInfo = {};
framebufferInfo.sType = VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO;
framebufferInfo.renderPass = renderPass;
framebufferInfo.attachmentCount = static_cast<uint32_t>(attachments.size());
framebufferInfo.pAttachments = attachments.data();
framebufferInfo.width = swapChainExtent.width;
framebufferInfo.height = swapChainExtent.height;
framebufferInfo.layers = 1;
和每个交换链图像对应不同的颜色附着不同,使用我们这里的信号量设置,同时只会有一个子流程在执行,所以,这里我们只需要使用一个深度附着即可。
我们需要在createFramebuffers函数调用前创建深度图像相关的对象:
void initVulkan() {
...
createDepthResources();
createFramebuffers();
...
}