2022-03-01 07:56:23 +00:00
# ifndef VK_H
# define VK_H
# include <vulkan/vulkan.h>
# include <GLFW/glfw3.h>
# include "PhysicalDevice.h"
# include "Surface.h"
# include "Queue.h"
class Vulkan
{
public :
void init ( GLFWwindow * window ) ; // инициализация
void destroy ( ) ; // завершение работы
private :
VkInstance instance ; // Экземпляр Vulkan
PhysicalDevice physicalDevice ; // Физическое устройство
VkDevice logicalDevice ; // логическое устройство
Queue queue ; // очередь
Surface surface ; // Поверхность окна
VkSwapchainKHR swapChain ; // Список показа
std : : vector < VkImage > swapChainImages ; // Изображения из списка показа
std : : vector < VkImageView > swapChainImageViews ; // Информация о б изображениях из списка показа
VkRenderPass renderPass ; // Проходы рендера
VkPipelineLayout pipelineLayout ; // Раскладка конвейера
VkPipeline graphicsPipeline ; // Графический конвейер
// Структура для хранения флагов
struct
{
const bool VALIDATION = true ; // Использование слоев проверки
} states ;
void createInstance ( ) ; // Создание экземпяра Vulkan
void selectPhysicalDevice ( std : : vector < const char * > & deviceExtensions ) ; // Выбор физического устройства
void pickQueues ( ) ; // Выбор очередей
void createLogicalDevice ( std : : vector < const char * > & deviceExtensions ) ; // Создание логического устройства
void createWindowSurface ( GLFWwindow * window ) ; // Создание поверхности окна
void createSwapchain ( GLFWwindow * window ) ; // Создание цепочки показа
void createRenderpass ( ) ; // Создание проходов рендера
VkShaderModule createShaderModule ( const char * filename ) ; // Создание шейдерного модуля
void createGraphicPipeline ( ) ; // Создание графического конвеера
2022-03-03 12:51:09 +00:00
void createBuffer ( VkDeviceSize size , VkBufferUsageFlags usage , VkMemoryPropertyFlags properties , VkBuffer & buffer , VkDeviceMemory & bufferMemory ) ; // Создание произвольного буфера данных
2022-03-01 07:56:23 +00:00
} ;
# endif // VK_H