48 lines
1 KiB
C++
48 lines
1 KiB
C++
#pragma once
|
|
|
|
#include <vulkan/vulkan.h>
|
|
|
|
struct RenderTarget {
|
|
VkSurfaceKHR surface = nullptr;
|
|
VkSwapchainKHR swapchain = nullptr;
|
|
};
|
|
|
|
class Renderer {
|
|
public:
|
|
Renderer();
|
|
~Renderer();
|
|
|
|
RenderTarget* createSurfaceRenderTarget(VkSurfaceKHR surface);
|
|
void destroyRenderTarget(RenderTarget* target);
|
|
|
|
VkInstance getInstance() const {
|
|
return instance_;
|
|
}
|
|
|
|
private:
|
|
void createInstance();
|
|
#ifdef DEBUG
|
|
void createDebugMessenger();
|
|
#endif
|
|
void createLogicalDevice();
|
|
|
|
VkInstance instance_ = nullptr;
|
|
|
|
#ifdef DEBUG
|
|
bool enableDebug = false;
|
|
|
|
PFN_vkCreateDebugUtilsMessengerEXT createMessenger_ = nullptr;
|
|
PFN_vkDestroyDebugUtilsMessengerEXT destroyMessenger_ = nullptr;
|
|
|
|
VkDebugUtilsMessengerEXT messenger_ = nullptr;
|
|
#endif
|
|
|
|
VkPhysicalDevice physicalDevice_ = nullptr;
|
|
VkDevice device_ = nullptr;
|
|
|
|
struct {
|
|
uint32_t graphics = 0, presentation = 0;
|
|
} queueIndices;
|
|
|
|
VkQueue graphicsQueue_ = nullptr;
|
|
};
|