内存分配后,描述符集可以使用写和复制操作的组合进行更新。 要更新描述符集,调用:vkUpdateDescriptorSets
void vkUpdateDescriptorSets(
VkDevice device,
uint32_t descriptorWriteCount,
const VkWriteDescriptorSet* pDescriptorWrites,
uint32_t descriptorCopyCount,
const VkCopyDescriptorSet* pDescriptorCopies);
- device是更新描述符集的逻辑设备
- descriptorWriteCount是pDescriptorWrites数组中元素的数量
- pDescriptorWrites是指向VkWriteDescriptorSet结构数组的指针,该结构描述了要写入的描述符集
- descriptorCopyCount是pDescriptorCopies数组中元素的数量
- 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计算或图形)。以前通过这些集合应用的任何绑定都不再有效。