23 static Engine* getInstance();
25 void pollEvents()
override;
26 bool shouldClose()
const override;
27 void render()
override;
28 void waitDeviceIdle()
override;
29 EngineBinder* binder()
const override;
32 const DeviceHandler* getDevice()
const {
return m_deviceHandler.get(); }
33 Window* getWindow()
const {
return m_window.get(); }
35 void copyBuffer(VkBuffer srcBuffer, VkBuffer dstBuffer, VkDeviceSize size);
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;
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;
52 std::unique_ptr<CommandPool> m_commandPool;
53 std::unique_ptr<EngineRenderer> m_renderer;
55 std::unique_ptr<EngineBinder> m_engineBinder;
56 std::unique_ptr<EngineResourcesManager> m_resourcesManager;
59 GETTER
CommandPool* getCommandPool()
const {
return m_commandPool.get(); }
61 static bool hasStencilComponent(VkFormat format);