#pragma once #include "hk_device.hpp" #include "hk_game_object.hpp" #include "hk_pipeline.hpp" #include "hk_window.hpp" #include "hk_renderer.hpp" // std #include #include namespace hk { class FirstApp { public: static constexpr int WIDTH = 800; static constexpr int HEIGHT = 600; FirstApp(); ~FirstApp(); FirstApp(const FirstApp &) = delete; FirstApp &operator=(const FirstApp &) = delete; void run(); private: void loadGameObjects(); void createPipelineLayout(); void createPipeline(); void renderGameObjects(VkCommandBuffer commandBuffer); Window m_window{WIDTH, HEIGHT, "Hello Vulkan!"}; Device m_device{m_window}; Renderer m_renderer{m_window, m_device}; std::unique_ptr m_pipeline; VkPipelineLayout m_pipelineLayout; std::vector m_gameObjects; }; }