【发布时间】:2018-07-26 03:14:09
【问题描述】:
我对规范中使用的关于VkDescriptorSetLayoutBinding 结构描述的描述符绑定的语言有点困惑。 绑定元素
是该条目的绑定号,对应着色器阶段中相同绑定号的资源。
如 14.5.3 所述
用 s 的 DescriptorSet 装饰和 的 Binding 装饰标识的变量>b 表示该变量与
中指定VkDescriptorSetLayoutBinding相关联,该VkDescriptorSetLayoutBinding的绑定 等于pSetLayouts 中的b >[s] 在VkPipelineLayoutCreateInfo
因此,如果我正确理解了这一点,VkDescriptorSetLayoutBinding 描述的描述符绑定必须对该集中的每个活动资源变量都有一个条目。每个描述符绑定引用哪个资源变量由 binding 变量和每个变量的绑定修饰决定。
到目前为止一切顺利。令人困惑的部分是在调用vkUpdateDescriptorSets 时。结构 VkWriteDescriptorSet 具有元素 dstBindng 其中
是该集合中的描述符绑定。
我很困惑 dstBindng 的值是否必须与变量资源中用作装饰的绑定号相同,或者它应该用作VkDescriptorSetLayoutBinding 数组中的索引.
【问题讨论】:
-
你听起来很困惑,两个同名的东西是否指的是同一个东西。
-
不应该吗?我知道正确的答案是第一个(dstBindng 的值必须与变量资源中用作装饰的绑定号相同)。可能我一直在想
VkWriteDescriptorSet的 dstBinding 应该将VkDescriptorSetLayoutBinding的元素作为索引引用。 -
Vulkan 规范编写得非常仔细,以便清楚地说明描述符集中的绑定和某些用户提供的数组的索引。
-
确实,在具体问题上,并没有提到应该使用 dstBinding 作为索引。我仍然觉得它有些混乱。
-
查看英特尔关于descriptor sets 的教程。在那里你可以找到关于绑定的解释,我希望它比规范更清楚。
标签: vulkan