HatchitGraphics
ht_vkapplication.h
1 
15 #pragma once
16 
17 #include <ht_platform.h>
18 #include <ht_vulkan.h>
19 #include <ht_string.h>
20 #include <vector>
21 
22 namespace Hatchit
23 {
24  namespace Graphics
25  {
26  namespace Vulkan
27  {
28  class VKDevice;
29 
36  class HT_API VKApplication
37  {
38  public:
39  VKApplication();
40  VKApplication(const VkApplicationInfo& info);
41 
42  ~VKApplication();
43 
44  bool Initialize();
45  bool IsValid();
46 
47  const std::string Name() const;
48  const uint32_t Version() const;
49  const std::string EngineName() const;
50  const uint32_t EngineVersion() const;
51  const uint32_t APIVersion() const;
52 
53  const uint32_t EnabledLayerCount() const;
54  const uint32_t EnabledExtensionCount() const;
55 
56  const std::vector<std::string>& EnabledLayerNames() const;
57  const std::vector<std::string>& EnabledExtensionNames() const;
58 
59  VKDevice* const Device(uint32_t index);
60 
61  operator VkInstance();
62 
63  private:
64  VkInstance m_instance;
65  VkApplicationInfo m_info;
66 
67  std::vector<std::string> m_layers;
68  std::vector<std::string> m_extensions;
69 
70  std::vector<VKDevice*> m_devices;
71 
72  private:
73  bool CheckInstanceLayers();
74  bool CheckInstanceExtensions();
75 
76 
77  static VKAPI_ATTR VkBool32 VKAPI_CALL DebugCallback(VkFlags msgFlags, VkDebugReportObjectTypeEXT objType,
78  uint64_t srcObject, size_t location, int32_t msgCode,
79  const char *pLayerPrefix, const char *pMsg, void *pUserData);
80  };
81  }
82  }
83 }
Hatchit Engine Copyright(c) 2015-2016 Third-Degree.
Definition: ht_color.h:19
Defines a Vulkan application instance.
Definition: ht_vkapplication.h:36
Vulkan device wrapper.
Definition: ht_vkdevice.h:29