From 18d2fa9bbae2ed0536f045630eab9f66cc30055a Mon Sep 17 00:00:00 2001 From: "re.kovalev" Date: Thu, 3 Mar 2022 16:10:11 +0300 Subject: [PATCH] =?UTF-8?q?=D0=92=D1=8B=D0=B4=D0=B5=D0=BB=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=B1=D1=83=D1=84=D0=B5=D1=80=D0=BE=D0=B2=20?= =?UTF-8?q?=D0=BA=D0=BE=D0=BC=D0=B0=D0=BD=D0=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/vk.h | 1 + src/vk.cpp | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/include/vk.h b/include/vk.h index ad4f369..8f65f8d 100644 --- a/include/vk.h +++ b/include/vk.h @@ -26,6 +26,7 @@ class Vulkan VkPipelineLayout pipelineLayout; // Раскладка конвейера VkPipeline graphicsPipeline; // Графический конвейер VkCommandPool commandPool; // Пул команд + std::vector commandBuffers; // Буферы команд // Структура для хранения флагов struct diff --git a/src/vk.cpp b/src/vk.cpp index de80481..41942d8 100644 --- a/src/vk.cpp +++ b/src/vk.cpp @@ -787,4 +787,19 @@ void Vulkan::createCommandPool() throw std::runtime_error("Unable to create graphics command pool"); } + // Выделим память под буферы команд + commandBuffers.resize(swapChainImages.size()); + + // Информация о выделяемых буферах + VkCommandBufferAllocateInfo allocInfo{}; + allocInfo.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO; + allocInfo.commandPool = commandPool; + allocInfo.level = VK_COMMAND_BUFFER_LEVEL_PRIMARY; + allocInfo.commandBufferCount = (uint32_t) commandBuffers.size(); + + // Выделение буферов команд из пула команд + if (vkAllocateCommandBuffers(logicalDevice, &allocInfo, commandBuffers.data()) != VK_SUCCESS) + { + throw std::runtime_error("Unable to allocate command buffers"); + } }