gpt4 book ai didi

vulkan - 描述符绑定(bind)和绑定(bind)编号

转载 作者:行者123 更新时间:2023-12-03 17:57:03 24 4
gpt4 key购买 nike

我对规范中使用的关于 VkDescriptorSetLayoutBinding 描述的描述符绑定(bind)的语言有点困惑。结构。绑定(bind)元素

is the binding number of this entry and corresponds to a resource of the same binding number in the shader stages.



如 14.5.3 所述

A variable identified with a DescriptorSet decoration of s and a Binding decoration of b indicates that this variable is associated with the VkDescriptorSetLayoutBinding that has a binding equal to b in pSetLayouts[s] that was specified in VkPipelineLayoutCreateInfo



因此,如果我正确理解了 VkDescriptorSetLayoutBinding 所描述的描述符绑定(bind)该集合中的每个事件资源变量都必须有一个条目。每个描述符绑定(bind)引用哪个资源变量由绑定(bind)变量和每个变量的绑定(bind)修饰决定。

到现在为止还挺好。令人困惑的部分是在调用 vkUpdateDescriptorSets 时。 .结构 VkWriteDescriptorSet有元素 dstBindng

is the descriptor binding within that set.



我很困惑 dstBindng 的值是否必须与变量资源中用作装饰的绑定(bind)号相同,或者它应该用作 VkDescriptorSetLayoutBinding 中的索引。大批。

最佳答案

VkWriteDescriptorSet 中的 dstBinding 是 pBufferInfo 指向的第一个 VkDescriptorBufferInfo 的绑定(bind)#。

即我想将 4 个缓冲区写入描述符集,但它们属于不同类型(3 个存储缓冲区和一个统一缓冲区)。我可以从绑定(bind) #0 开始写入 3 个存储缓冲区(写入绑定(bind) #0、#1、#2),然后从绑定(bind) #3 开始写入 1 个统一缓冲区。

VkDescriptorBufferInfo descriptorBufferInfo[4];
...

VkWriteDescriptorSet writeDescriptorSet = {};
writeDescriptorSet.sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET;
writeDescriptorSet.pNext = NULL;
writeDescriptorSet.dstSet = descriptorSet;
writeDescriptorSet.dstBinding = 0;
writeDescriptorSet.dstArrayElement = 0;
writeDescriptorSet.descriptorCount = 3;
writeDescriptorSet.descriptorType = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER;
writeDescriptorSet.pImageInfo = NULL;
writeDescriptorSet.pBufferInfo = descriptorBufferInfo;
writeDescriptorSet.pTexelBufferView = NULL;

vkUpdateDescriptorSets(device, 1, &writeDescriptorSet, NULL, NULL);

writeDescriptorSet.dstBinding = 3;
writeDescriptorSet.descriptorCount = 1;
writeDescriptorSet.descriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER;
writeDescriptorSet.pBufferInfo = &descriptorBufferInfo[3];

vkUpdateDescriptorSets(device, 1, &writeDescriptorSet, NULL, NULL);

关于vulkan - 描述符绑定(bind)和绑定(bind)编号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39371033/

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