Создание пула команд
This commit is contained in:
parent
6a3f091190
commit
b7fceb5433
|
@ -25,6 +25,7 @@ class Vulkan
|
||||||
VkRenderPass renderPass; // Проходы рендера
|
VkRenderPass renderPass; // Проходы рендера
|
||||||
VkPipelineLayout pipelineLayout; // Раскладка конвейера
|
VkPipelineLayout pipelineLayout; // Раскладка конвейера
|
||||||
VkPipeline graphicsPipeline; // Графический конвейер
|
VkPipeline graphicsPipeline; // Графический конвейер
|
||||||
|
VkCommandPool commandPool; // Пул команд
|
||||||
|
|
||||||
// Структура для хранения флагов
|
// Структура для хранения флагов
|
||||||
struct
|
struct
|
||||||
|
@ -43,6 +44,7 @@ class Vulkan
|
||||||
VkShaderModule createShaderModule(const char * filename); // Создание шейдерного модуля
|
VkShaderModule createShaderModule(const char * filename); // Создание шейдерного модуля
|
||||||
void createGraphicPipeline(); // Создание графического конвеера
|
void createGraphicPipeline(); // Создание графического конвеера
|
||||||
void createBuffer(VkDeviceSize size, VkBufferUsageFlags usage, VkMemoryPropertyFlags properties, VkBuffer& buffer, VkDeviceMemory& bufferMemory); // Создание произвольного буфера данных
|
void createBuffer(VkDeviceSize size, VkBufferUsageFlags usage, VkMemoryPropertyFlags properties, VkBuffer& buffer, VkDeviceMemory& bufferMemory); // Создание произвольного буфера данных
|
||||||
|
void createCommandPool(); // Создание пула команд
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // VK_H
|
#endif // VK_H
|
26
src/vk.cpp
26
src/vk.cpp
|
@ -19,14 +19,17 @@ void Vulkan::init(GLFWwindow* window)
|
||||||
createSwapchain(window); // Создание списка показа
|
createSwapchain(window); // Создание списка показа
|
||||||
createRenderpass(); // Создание проходов рендера
|
createRenderpass(); // Создание проходов рендера
|
||||||
createGraphicPipeline(); // Создание графического конвейера
|
createGraphicPipeline(); // Создание графического конвейера
|
||||||
|
createCommandPool(); // Создание пула команд
|
||||||
}
|
}
|
||||||
|
|
||||||
// завершение работы
|
// завершение работы
|
||||||
void Vulkan::destroy()
|
void Vulkan::destroy()
|
||||||
{
|
{
|
||||||
vkDestroyPipeline(logicalDevice, graphicsPipeline, nullptr);
|
vkDestroyCommandPool(logicalDevice, commandPool, nullptr); // Уничтожение командного пула
|
||||||
vkDestroyPipelineLayout(logicalDevice, pipelineLayout, nullptr);
|
|
||||||
vkDestroyRenderPass(logicalDevice, renderPass, nullptr);
|
vkDestroyPipeline(logicalDevice, graphicsPipeline, nullptr); // Уничтожение графического конвейера
|
||||||
|
vkDestroyPipelineLayout(logicalDevice, pipelineLayout, nullptr); // Уничтожение раскладки графического конвейера
|
||||||
|
vkDestroyRenderPass(logicalDevice, renderPass, nullptr); // Уничтожение проходов рендера
|
||||||
|
|
||||||
// Уничтожение информации о изображениях списка показа
|
// Уничтожение информации о изображениях списка показа
|
||||||
for (auto & imageView : swapChainImageViews)
|
for (auto & imageView : swapChainImageViews)
|
||||||
|
@ -768,3 +771,20 @@ void Vulkan::createBuffer(VkDeviceSize size, VkBufferUsageFlags usage, VkMemoryP
|
||||||
// Привязка выделенной памяти к буферу
|
// Привязка выделенной памяти к буферу
|
||||||
vkBindBufferMemory(logicalDevice, buffer, bufferMemory, 0);
|
vkBindBufferMemory(logicalDevice, buffer, bufferMemory, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Создание пула команд
|
||||||
|
void Vulkan::createCommandPool()
|
||||||
|
{
|
||||||
|
// Информация о создаваемом командном пуле
|
||||||
|
VkCommandPoolCreateInfo poolInfo{};
|
||||||
|
poolInfo.sType = VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO;
|
||||||
|
poolInfo.flags = VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT;
|
||||||
|
poolInfo.queueFamilyIndex = queue.index;
|
||||||
|
|
||||||
|
// Создание командного пула
|
||||||
|
if (vkCreateCommandPool(logicalDevice, &poolInfo, nullptr, &commandPool) != VK_SUCCESS)
|
||||||
|
{
|
||||||
|
throw std::runtime_error("Unable to create graphics command pool");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue