diff --git a/VulkanContext.cpp b/VulkanContext.cpp new file mode 100644 index 0000000..e69e7b8 --- /dev/null +++ b/VulkanContext.cpp @@ -0,0 +1 @@ +#include "VulkanContext.h" diff --git a/VulkanContext.h b/VulkanContext.h new file mode 100644 index 0000000..31e9915 --- /dev/null +++ b/VulkanContext.h @@ -0,0 +1,49 @@ +#pragma once +#include +#include + +#include "Logger.h" +#include "VulkanInstanceManager.h" +#include "VulkanDeviceManager.h" +#include "VulkanDebugManager.h" +#include "GlfwWindowManager.h" + +#define GLFW_INCLUDE_VULKAN +#include + +const std::vector ValidationLayers = { + "VK_LAYER_KHRONOS_validation" +}; + +struct FVulkanConfig +{ + bool bValidationEnabled = true; + bool bVerboseLogging = false; +}; + +class VulkanContext +{ +public: + VulkanContext(); + ~VulkanContext(); + + void Initialize(FVulkanConfig& inConfig); + void Cleanup(); + +private: + FVulkanConfig Config = {}; + + VkInstance Instance = VK_NULL_HANDLE; + VkPhysicalDevice PhysicalDevice = VK_NULL_HANDLE; + VkDevice Device = VK_NULL_HANDLE; + VkQueue GraphicsQueue = VK_NULL_HANDLE; + VkSurfaceKHR Surface = VK_NULL_HANDLE; + VkDebugUtilsMessengerEXT debugMessenger = VK_NULL_HANDLE; + +public: + VkInstance GetInstance() const { return Instance; } + VkPhysicalDevice GetPhysicalDevice() const { return PhysicalDevice; } + VkDevice GetDevice() const { return Device; } + VkQueue GetGraphicsQueue() const { return GraphicsQueue; } + VkSurfaceKHR GetSurface() const { return Surface; } +}; diff --git a/VulkanDeviceManager.h b/VulkanDeviceManager.h index d45f06a..2f66ba5 100644 --- a/VulkanDeviceManager.h +++ b/VulkanDeviceManager.h @@ -3,20 +3,20 @@ #define GLFW_INCLUDE_VULKAN #include -struct FCreateDebugUtilsMessengerExtParams -{ - VkInstance Instance; - const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo; - const VkAllocationCallbacks* pAllocator; - VkDebugUtilsMessengerEXT* pDebugMessenger; -}; - -struct FDestroyDebugUtilsMessengerExtParams -{ - VkInstance Instance; - VkDebugUtilsMessengerEXT DebugMessenger; - const VkAllocationCallbacks* pAllocator; -}; +// struct FCreateDebugUtilsMessengerExtParams +//{ +// VkInstance Instance; +// const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo; +// const VkAllocationCallbacks* pAllocator; +// VkDebugUtilsMessengerEXT* pDebugMessenger; +// }; +// +// struct FDestroyDebugUtilsMessengerExtParams +//{ +// VkInstance Instance; +// VkDebugUtilsMessengerEXT DebugMessenger; +// const VkAllocationCallbacks* pAllocator; +// }; class VulkanDeviceManager {