Копия проекта с репозитория 04
This commit is contained in:
17
include/PhysicalDevice.h
Normal file
17
include/PhysicalDevice.h
Normal file
@@ -0,0 +1,17 @@
|
||||
#ifndef PHYSICALDEVICE_H
|
||||
#define PHYSICALDEVICE_H
|
||||
|
||||
#include <vulkan/vulkan.h>
|
||||
|
||||
#include <vector>
|
||||
|
||||
typedef struct _PhysicalDevice
|
||||
{
|
||||
VkPhysicalDevice device; // устройство
|
||||
VkPhysicalDeviceProperties properties; // параметры
|
||||
VkPhysicalDeviceFeatures features; // функции
|
||||
VkPhysicalDeviceMemoryProperties memory; // память
|
||||
std::vector<VkQueueFamilyProperties> queueFamilyProperties; // семейства очередей
|
||||
} PhysicalDevice;
|
||||
|
||||
#endif // PHYSICALDEVICE_H
|
||||
13
include/Queue.h
Normal file
13
include/Queue.h
Normal file
@@ -0,0 +1,13 @@
|
||||
#ifndef QUEUE_H
|
||||
#define QUEUE_H
|
||||
|
||||
#include <vulkan/vulkan.h>
|
||||
|
||||
typedef struct _Queue
|
||||
{
|
||||
uint32_t index;
|
||||
VkQueue descriptor;
|
||||
VkQueueFamilyProperties properties;
|
||||
} Queue;
|
||||
|
||||
#endif // QUEUE_H
|
||||
21
include/Surface.h
Normal file
21
include/Surface.h
Normal file
@@ -0,0 +1,21 @@
|
||||
#ifndef SURFACE_H
|
||||
#define SURFACE_H
|
||||
|
||||
#include <vulkan/vulkan.h>
|
||||
|
||||
#include <vector>
|
||||
|
||||
typedef struct _Surface
|
||||
{
|
||||
VkSurfaceKHR surface; // Поверхность окна
|
||||
VkSurfaceCapabilitiesKHR capabilities; // общая информация
|
||||
std::vector<VkSurfaceFormatKHR> formats; // формат поверхности
|
||||
std::vector<VkPresentModeKHR> presentModes; // режим показа
|
||||
// Данные о списке показа
|
||||
VkSurfaceFormatKHR selectedFormat; // выбранный формат поверхности
|
||||
VkPresentModeKHR selectedPresentMode; // выбранный режим показа
|
||||
VkExtent2D selectedExtent; // выбранное разрешение
|
||||
uint32_t imageCount; // количество изображений
|
||||
} Surface;
|
||||
|
||||
#endif // SURFACE_H
|
||||
11
include/Vertex.h
Normal file
11
include/Vertex.h
Normal file
@@ -0,0 +1,11 @@
|
||||
#ifndef VERTEX_H
|
||||
#define VERTEX_H
|
||||
|
||||
#include <GLM/vec3.hpp>
|
||||
|
||||
typedef struct _Vertex
|
||||
{
|
||||
glm::vec3 position, color;
|
||||
} Vertex;
|
||||
|
||||
#endif // VERTEX_H
|
||||
1
include/macroses.h
Normal file
1
include/macroses.h
Normal file
@@ -0,0 +1 @@
|
||||
#define CLAMP(min, value, max) (value > min) ? min : (max < value) ? max : value;
|
||||
47
include/vk.h
Normal file
47
include/vk.h
Normal file
@@ -0,0 +1,47 @@
|
||||
#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(); // Создание графического конвеера
|
||||
};
|
||||
|
||||
#endif // VK_H
|
||||
Reference in New Issue
Block a user