84 std::vector<VkDescriptorSetLayout> & layouts,
85 std::vector<std::vector<VkDescriptorImageInfo>> & infos,
86 std::vector<std::vector<VkDescriptorType>> & types
89 VkDescriptorSetAllocateInfo allocInfo{};
90 allocInfo.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO;
92 allocInfo.descriptorSetCount = layouts.size();
93 allocInfo.pSetLayouts = layouts.data();
95 descriptorSets.resize(layouts.size());
96 if (vkAllocateDescriptorSets(device.
getVkDevice(), &allocInfo, descriptorSets.data()) != VK_SUCCESS)
98 throw std::runtime_error(
"Failed to allocate image descriptor sets");
101 for (
size_t i = 0; i < layouts.size(); i++)
103 for (
size_t j = 0; j < infos[i].size(); j++)
105 VkWriteDescriptorSet descriptorWrite{};
106 descriptorWrite.sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET;
107 descriptorWrite.dstSet = descriptorSets[i];
108 descriptorWrite.dstBinding = j;
109 descriptorWrite.dstArrayElement = 0;
111 descriptorWrite.descriptorType = types[i][j];
112 descriptorWrite.descriptorCount = 1;
114 descriptorWrite.pImageInfo = &infos[i][j];
116 vkUpdateDescriptorSets(device.
getVkDevice(), 1, &descriptorWrite, 0,
nullptr);