gpt4 book ai didi

c++ - 描述多 channel 渲染的附件

转载 作者:行者123 更新时间:2023-11-30 02:24:24 24 4
gpt4 key购买 nike

我正在尝试使用一个渲染 channel 和两个子 channel 在 vulkan 中创建一个延迟渲染器。第一个应该是填充 G-Buffer 的几何 channel ,第二个应该是应用光照的着色 channel 。现在的问题是我无法理解我应该如何描述 VkRenderPassCreateInfo 中子 channel 之间的依赖关系。 .

VkRenderPassCreateInfo有一个字段:

pAttachments指向 attachmentCount 的数组数量VkAttachmentDescription描述附件属性的结构,或 NULL如果attachmentCount为零。

但是 VkSubpassDescription有一个字段:

pColorAttachmentscolorAttachmentCount 的数组VkAttachmentReference列出哪些渲染 channel 的附件将用作子 channel 中的颜色附件的结构,以及每个附件在子 channel 中的布局。数组的每个元素对应于一个片段着色器输出位置,即如果着色器声明了一个输出变量 layout(location=X)然后它使用 pColorAttachments[X] 中提供的附件

据我了解 pColorAttachmentsVkSubpassDescription声明每遍输出的布局。所以在我的示例中,第一个子 channel 将有 4 个输出:1 个位置、1 个法线、1 个镜面反射和 1 个深度附件。第二个子 channel 将有 1 个输出:屏幕上显示的颜色。如果这是真的,那么 pAttachments 的目的是什么? VkRenderPassCreateInfo 中的字段?

最佳答案

渲染 channel 定义附件;子传递 reference 它们。这就是为什么结构被称为:VkAttachmentReference;它引用由渲染过程定义的附件。渲染过程使用 VkAttachmentDescription 对象数组定义附件。 VkAttachmentReference 只是该数组的索引。

渲染 channel 中可以拥有的附件数量以及单个子 channel 可以使用的附件数量都有硬性限制。

关于c++ - 描述多 channel 渲染的附件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45357742/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com