diff --git a/include/vk.h b/include/vk.h index 55544d9..bb0d4a3 100644 --- a/include/vk.h +++ b/include/vk.h @@ -42,6 +42,7 @@ class Vulkan void createRenderpass(); // Создание проходов рендера VkShaderModule createShaderModule(const char * filename); // Создание шейдерного модуля void createGraphicPipeline(); // Создание графического конвеера + void createBuffer(VkDeviceSize size, VkBufferUsageFlags usage, VkMemoryPropertyFlags properties, VkBuffer& buffer, VkDeviceMemory& bufferMemory); // Создание произвольного буфера данных }; #endif // VK_H \ No newline at end of file diff --git a/src/vk.cpp b/src/vk.cpp index 4b3b4a0..b183dd8 100644 --- a/src/vk.cpp +++ b/src/vk.cpp @@ -717,3 +717,20 @@ void Vulkan::createGraphicPipeline() vkDestroyShaderModule(logicalDevice, fragShaderModule, nullptr); vkDestroyShaderModule(logicalDevice, vertShaderModule, nullptr); } + +// Создание произвольного буфера данных +void Vulkan::createBuffer(VkDeviceSize size, VkBufferUsageFlags usage, VkMemoryPropertyFlags properties, VkBuffer& buffer, VkDeviceMemory& bufferMemory) +{ + // Информация о создаваемом буфере + VkBufferCreateInfo bufferInfo{}; + bufferInfo.sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO; + bufferInfo.size = size; + bufferInfo.usage = usage; + bufferInfo.sharingMode = VK_SHARING_MODE_EXCLUSIVE; + + // Создание буфера + if (vkCreateBuffer(logicalDevice, &bufferInfo, nullptr, &buffer) != VK_SUCCESS) + { + throw std::runtime_error("Unable to create buffer"); + } +}