描述符集与描述符

Vulkan API 中的描述符集管理是关键步骤,vkUpdateDescriptorSets 函数用于更新描述符集,而 vkCmdBindDescriptorSets 则用于将它们绑定到图形或计算管道。vkUpdateDescriptorSets 接受写入和复制操作来修改描述符,vkCmdBindDescriptorSets 确保正确地应用这些更新到后续的渲染命令中。
摘要由CSDN通过智能技术生成

内存分配后,描述符集可以使用写和复制操作的组合进行更新。 要更新描述符集,调用:vkUpdateDescriptorSets

void vkUpdateDescriptorSets(
    VkDevice                                    device,
    uint32_t                                    descriptorWriteCount,
    const VkWriteDescriptorSet*                 pDescriptorWrites,
    uint32_t                                    descriptorCopyCount,
    const VkCopyDescriptorSet*                  pDescriptorCopies);

  1. device是更新描述符集的逻辑设备
  2. descriptorWriteCount是pDescriptorWrites数组中元素的数量
  3. pDescriptorWrites是指向VkWriteDescriptorSet结构数组的指针,该结构描述了要写入的描述符集
  4. descriptorCopyCount是pDescriptorCopies数组中元素的数量
  5. pDescriptorCopies是指向VkCopyDescriptorSet结构数组的指针,该结构描述了要在其间复制的描述符集

VkWriteDescriptorSet

typedef struct VkWriteDescriptorSet {
    VkStructureType                  sType;
    const void*                      pNext;
    VkDescriptorSet                  dstSet;
    uint32_t                         dstBinding;
    uint32_t                         dstArrayElement;
    uint32_t                         descriptorCount;
    VkDescriptorType                 descriptorType;
    const VkDescriptorImageInfo*     pImageInfo;
    const VkDescriptorBufferInfo*    pBufferInfo;
    const VkBufferView*              pTexelBufferView;
} VkWriteDescriptorSet;

绑定描述符集调用 vkCmdBindDescriptorSets

 void vkCmdBindDescriptorSets(
    VkCommandBuffer                             commandBuffer,
    VkPipelineBindPoint                         pipelineBindPoint,
    VkPipelineLayout                            layout,
    uint32_t                                    firstSet,
    uint32_t                                    descriptorSetCount,
    const VkDescriptorSet*                      pDescriptorSets,
    uint32_t                                    dynamicOffsetCount,
    const uint32_t*                             pDynamicOffsets);

vkCmdBindDescriptorSets导致编号为[firstSet…firstSet + descriptorSetCount-1]的集合使用存储在pDescriptorSets [0…descriptorSetCount-1]中的绑定用于后续渲染命令(根据pipelineBindPoint计算或图形)。以前通过这些集合应用的任何绑定都不再有效。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

都市无名者

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

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

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

打赏作者

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

抵扣说明:

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

余额充值