Vulkan学习--10.创建帧缓冲对象

我们在创建渲染流程对象时指定使用的附着需要绑定在帧缓冲对象上使用。帧缓冲对象引用了用于表示附着的 VkImageView 对象。对于我们的程序,我们只使用了一个颜色附着。但这并不意味着我们只需要使用一张图像,每个附着对应的图像个数依赖于交换链用于呈现操作的图像个数。我们需要为交换链中的每个图像创建对应的帧缓冲,在渲染时,渲染到对应的帧缓冲上。

示例demo:

    //存储所有帧缓冲对象--10
    std::vector<VkFramebuffer> swapChainFramebuffers;

    //帧缓冲对象的创建--10
    void createFramebuffers(){
        //分配足够的空间来存储所有帧缓冲对象
        swapChainFramebuffers.resize(swapChainImageViews.size());
        for(size_t i = 0;i<swapChainImageViews.size();i++){
            //为交换链的每一个图像视图对象创建对应的帧缓冲
            VkImageView attachments[] = {
                swapChainImageViews[i]
            };
            VkFramebufferCreateInfo framebufferInfo = {};
            framebufferInfo.sType =
                    VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO;
            /**
            指定帧缓冲需要兼容的渲染流程对象.
            之后的渲染操作,我们可以使用与这个指定的渲染流程对象相兼容的其它渲染流程对象.
            一般来说,使用相同数量,相同类型附着的渲染流程对象是相兼容的。
              */
            framebufferInfo.renderPass = renderPass;
            //指定附着个数
            framebufferInfo.attachmentCount = 1;
            //指定渲染流程对象用于描述附着信息的 pAttachment 数组
            framebufferInfo.pAttachments = attachments;
            //指定帧缓冲的大小
            framebufferInfo.width = swapChainExtent.width;
            framebufferInfo.height = swapChainExtent.height;
            //指定图像层数,这里的交换链图像都是单层的
            framebufferInfo.layers = 1;
            //创建帧缓冲对象
            if(vkCreateFramebuffer(device,&framebufferInfo,nullptr,
                                   &swapChainFramebuffers[i]) != VK_SUCCESS){
                throw std::runtime_error("failed to create framebuffer!");
            }
        }
    }

        //销毁帧缓冲对象--10
        for(auto framebuffer : swapChainFramebuffers){
            vkDestroyFramebuffer(device,framebuffer,nullptr);
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力减肥的小胖子5

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值