NarcEngine 0.1.1
C++ Vulkan game engine
 
Loading...
Searching...
No Matches
Engine.h
1#pragma once
2
3#include "interfaces/IEngine.h"
4
5#include "CommandPool.h"
6
7#include "core/DeviceHandler.h"
8#include "core/EngineBinder.h"
9#include "core/EngineDebugLogger.h"
10#include "core/EngineInstance.h"
11
12#include "renderer/EngineRenderer.h"
13
14namespace narc_engine {
15 class Engine final : public IEngine
16 {
17 friend EngineBinder;
18
19 public:
20 Engine();
21 ~Engine() override;
22
23 static Engine* getInstance();
24
25 void pollEvents() override;
26 bool shouldClose() const override;
27 void render() override;
28 void waitDeviceIdle() override;
29 EngineBinder* binder() const override;
30 EngineResourcesManager* resourceManager() const override;
31
32 const DeviceHandler* getDevice() const { return m_deviceHandler.get(); }
33 Window* getWindow() const { return m_window.get(); }
34
35 void copyBuffer(VkBuffer srcBuffer, VkBuffer dstBuffer, VkDeviceSize size);
36
37 void transitionImageLayout(VkImage image, VkFormat format, VkImageLayout oldLayout, VkImageLayout newLayout);
38 void copyBufferToImage(VkBuffer buffer, VkImage image, uint32_t width, uint32_t height);
39 void createImage(uint32_t width, uint32_t height, VkFormat format, VkImageTiling tiling,
40 VkImageUsageFlags usage, VkMemoryPropertyFlags properties, VkImage& image,
41 VkDeviceMemory& imageMemory) const;
42 void createImage(const narc_io::Image& imageData, VkFormat format, VkImageTiling tiling,
43 VkImageUsageFlags usage,
44 VkMemoryPropertyFlags properties, VkImage& image, VkDeviceMemory& imageMemory) const;
45
46 private:
47 std::unique_ptr<EngineInstance> m_instance;
48 std::unique_ptr<Window> m_window;
49 std::unique_ptr<EngineDebugLogger> m_debugLogger;
50 std::unique_ptr<DeviceHandler> m_deviceHandler;
51
52 std::unique_ptr<CommandPool> m_commandPool;
53 std::unique_ptr<EngineRenderer> m_renderer;
54
55 std::unique_ptr<EngineBinder> m_engineBinder;
56 std::unique_ptr<EngineResourcesManager> m_resourcesManager;
57
58 private:
59 GETTER CommandPool* getCommandPool() const { return m_commandPool.get(); }
60
61 static bool hasStencilComponent(VkFormat format);
62 };
63}
Definition CommandPool.h:10
Definition DeviceHandler.h:11
Definition EngineResourcesManager.h:15
Definition IEngine.h:8
Definition Window.h:12
Definition Image.h:8