代码之家  ›  专栏  ›  技术社区  ›  Nor-s

什么是“VkPipelineColorBlendAttachmentState包含每个附加帧缓冲区的配置”?

  •  0
  • Nor-s  · 技术社区  · 3 年前

    我读了 Color blending Vulkan教程。

    这个页面上写着:

    第一个结构VkPipelineColorBlendAttachmentState包含每个附加帧缓冲区的配置,第二个结构Vk PipelineCoolorBlendStateCreateInfo包含全局颜色混合设置。在我们的情况下,我们只有一个帧缓冲区

    第二个结构引用所有帧缓冲区的结构数组

    然而,在 Framebuffers 第章,帧缓冲区的创建数量与imageView的数量一样多。

    但与之相关的代码是相同的。

    并且每个帧缓冲区结构没有与帧缓冲区相关的成员。

    如何将颜色混合附件附加到帧缓冲区?

    我的猜测是,当命令录制(渲染过程开始)时,会自动附加VkFramebufferCreateInfo::pAttachments,对吗?

    或VkSubpassDescription::pColorAttachments?

    因为 specification

    attachmentCount的值必须大于使用此管道的子路径的VkSubpassDescription::pColorAttachments或VkSubpassDescription2::pColorAttachments中不是VK_ATTACHMENT_UNUSED的所有颜色附件的索引。

    0 回复  |  直到 3 年前
        1
  •  3
  •   Nicol Bolas    3 年前

    有时,教程没有使用正确的措辞。这就是其中一个时代。

    回想一下,管道是针对特定渲染过程的特定子路径构建的。还记得子路径有一个颜色附件列表(除其他外),这些颜色附件表示该子路径中渲染操作的渲染目标。

    什么教程 方法 是吗 VkPipelineColorBlendAttachmentState 定义管道指定的子路径中特定附件的混合状态。的数组 Vk管道颜色混合附件状态 structs反映了正在为其构建管道的子通道中使用的颜色附件阵列。所以的第三个元素 VkPipelineColorBlendStateCreateInfo::pAttachments 对应于中的第三个元素 VkSubpassDescription::pColorAttachments 对于正在为其构建管道的子通道。

    出于某种原因,本教程将这些附件称为“附加的帧缓冲区”,如下所示 绝对地 使用错误的术语。它们只是附属品。

    帧缓冲区提供了在开始渲染过程时用作附件的图像。但管道并不(真正)关心您使用的图像对象。它关心的是你所说的副通道中的颜色附着。