Engine
Frameworkcreatedbymeusableforthecreationofsimplegames.CurrentlysupportsOpenGL(Verysimple)andVulkan.
VulkanInstance.hpp
Go to the documentation of this file.
1 #pragma once
3 #ifdef USING_VULKAN
4 #include <ThirdParty/Vulkan/Include/vulkan/vulkan.h>
5 
6 #include "Engine/api.hpp"
7 
8 namespace Engine {
9 
10  class ENGINE_API VulkanAppData {
11  public:
12  char* appName = "";
13  int versionMajor = 0;
14  int versionMinor = 0;
15  int versionPatch = 1;
16  };
17 
18  enum ENGINE_API DebugLevel {
19  LEVEL_NONE = 0,
20  LEVEL_ERROR = VK_DEBUG_REPORT_ERROR_BIT_EXT,
21  LEVEL_WARNINGS = VK_DEBUG_REPORT_ERROR_BIT_EXT | VK_DEBUG_REPORT_WARNING_BIT_EXT,
22  LEVEL_PERFORMANCE_WARNING = VK_DEBUG_REPORT_ERROR_BIT_EXT | VK_DEBUG_REPORT_WARNING_BIT_EXT | VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT,
23  LEVEL_INFORMATION = VK_DEBUG_REPORT_ERROR_BIT_EXT | VK_DEBUG_REPORT_WARNING_BIT_EXT |
24  VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT | VK_DEBUG_REPORT_INFORMATION_BIT_EXT,
25  LEVEL_DEBUG = VK_DEBUG_REPORT_ERROR_BIT_EXT | VK_DEBUG_REPORT_WARNING_BIT_EXT |
26  VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT | VK_DEBUG_REPORT_INFORMATION_BIT_EXT |
27  VK_DEBUG_REPORT_DEBUG_BIT_EXT
28  };
29 
30  class ENGINE_LOCAL VulkanInstance
31  {
32  public:
33  VulkanInstance(bool debugEnabled, DebugLevel debugLevel, VulkanAppData engineData = {}, VulkanAppData appData = {}, PFN_vkDebugReportCallbackEXT debugCallback = nullptr);
34  ~VulkanInstance();
35 
36  VkInstance GetInstance() const noexcept;
37 
38  protected:
39  VkInstance instance;
40  VkDebugReportCallbackEXT debugReportCallback;
41  bool debugEnabled;
42  };
43 
44 }
45 
46 #endif // USING_VULKAN
#define ENGINE_API
Definition: api.hpp:25
#define ENGINE_LOCAL
Definition: api.hpp:26