2022-02-10 14:30:30 +00:00
|
|
|
|
#ifndef VK_H
|
|
|
|
|
#define VK_H
|
|
|
|
|
|
|
|
|
|
#include <vulkan/vulkan.h>
|
|
|
|
|
#include <GLFW/glfw3.h>
|
|
|
|
|
|
|
|
|
|
#include "PhysicalDevice.h"
|
2022-02-16 16:09:55 +00:00
|
|
|
|
#include "Surface.h"
|
2022-02-17 15:11:57 +00:00
|
|
|
|
#include "Queue.h"
|
2022-02-10 14:30:30 +00:00
|
|
|
|
|
|
|
|
|
class Vulkan
|
|
|
|
|
{
|
|
|
|
|
public:
|
2022-02-10 14:35:40 +00:00
|
|
|
|
void init(GLFWwindow* window); // инициализация
|
2022-02-10 14:30:30 +00:00
|
|
|
|
void destroy(); // завершение работы
|
|
|
|
|
private:
|
|
|
|
|
VkInstance instance; // Экземпляр Vulkan
|
|
|
|
|
PhysicalDevice physicalDevice; // Физическое устройство
|
|
|
|
|
VkDevice logicalDevice; // логическое устройство
|
2022-02-17 15:11:57 +00:00
|
|
|
|
Queue queue; // очередь
|
2022-02-16 16:09:55 +00:00
|
|
|
|
Surface surface; // Поверхность окна
|
2022-02-17 09:04:03 +00:00
|
|
|
|
VkSwapchainKHR swapChain; // Список показа
|
2022-02-17 15:17:09 +00:00
|
|
|
|
std::vector<VkImage> swapChainImages; // Изображения из списка показа
|
2022-02-18 12:33:04 +00:00
|
|
|
|
std::vector<VkImageView> swapChainImageViews; // Информация об изображениях из списка показа
|
2022-02-17 15:17:09 +00:00
|
|
|
|
|
2022-02-10 14:30:30 +00:00
|
|
|
|
// Структура для хранения флагов
|
|
|
|
|
struct
|
|
|
|
|
{
|
|
|
|
|
const bool VALIDATION = true; // Использование слоев проверки
|
|
|
|
|
} states;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void createInstance(); // Создание экземпяра Vulkan
|
|
|
|
|
void selectPhysicalDevice(std::vector<const char*> &deviceExtensions); // Выбор физического устройства
|
2022-02-17 15:11:57 +00:00
|
|
|
|
void pickQueues(); // Выбор очередей
|
2022-02-10 14:30:30 +00:00
|
|
|
|
void createLogicalDevice(std::vector<const char*> &deviceExtensions); // Создание логического устройства
|
2022-02-10 14:35:40 +00:00
|
|
|
|
void createWindowSurface(GLFWwindow* window); // Создание поверхности окна
|
2022-02-17 06:59:57 +00:00
|
|
|
|
void createSwapchain(GLFWwindow* window); // Создание цепочки показа
|
2022-02-16 16:09:55 +00:00
|
|
|
|
};
|
2022-02-10 14:30:30 +00:00
|
|
|
|
|
|
|
|
|
#endif // VK_H
|