Создание пула команд
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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user