| 498 | } |
| 499 | |
| 500 | void HelloVK::createDescriptorSets() { |
| 501 | std::vector<VkDescriptorSetLayout> layouts(MAX_FRAMES_IN_FLIGHT, |
| 502 | descriptorSetLayout); |
| 503 | VkDescriptorSetAllocateInfo allocInfo{}; |
| 504 | allocInfo.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO; |
| 505 | allocInfo.descriptorPool = descriptorPool; |
| 506 | allocInfo.descriptorSetCount = static_cast<uint32_t>(MAX_FRAMES_IN_FLIGHT); |
| 507 | allocInfo.pSetLayouts = layouts.data(); |
| 508 | |
| 509 | descriptorSets.resize(MAX_FRAMES_IN_FLIGHT); |
| 510 | VK_CHECK(vkAllocateDescriptorSets(device, &allocInfo, descriptorSets.data())); |
| 511 | |
| 512 | for (size_t i = 0; i < MAX_FRAMES_IN_FLIGHT; i++) { |
| 513 | VkDescriptorBufferInfo bufferInfo{}; |
| 514 | bufferInfo.buffer = uniformBuffers[i]; |
| 515 | bufferInfo.offset = 0; |
| 516 | bufferInfo.range = sizeof(UniformBufferObject); |
| 517 | |
| 518 | VkWriteDescriptorSet descriptorWrite{}; |
| 519 | descriptorWrite.sType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET; |
| 520 | descriptorWrite.dstSet = descriptorSets[i]; |
| 521 | descriptorWrite.dstBinding = 0; |
| 522 | descriptorWrite.dstArrayElement = 0; |
| 523 | descriptorWrite.descriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER; |
| 524 | descriptorWrite.descriptorCount = 1; |
| 525 | descriptorWrite.pBufferInfo = &bufferInfo; |
| 526 | |
| 527 | vkUpdateDescriptorSets(device, 1, &descriptorWrite, 0, nullptr); |
| 528 | } |
| 529 | } |
| 530 | |
| 531 | void HelloVK::updateUniformBuffer(uint32_t currentImage) { |
| 532 | SwapChainSupportDetails swapChainSupport = |