#pragma once #include "copium/asset/AssetMeta.h" #include "copium/buffer/Framebuffer.h" #include "copium/mesh/Mesh.h" #include "copium/pipeline/DescriptorPool.h" #include "copium/pipeline/DescriptorSet.h" #include "copium/pipeline/Pipeline.h" #include "copium/renderer/Renderer.h" namespace Copium { class Application final { CP_DELETE_COPY_AND_MOVE_CTOR(Application); private: std::unique_ptr renderer; std::unique_ptr framebuffer; AssetHandle texture2D; AssetHandle texture2D2; std::unique_ptr descriptorPool; std::unique_ptr descriptorSet; std::unique_ptr descriptorSetPassthrough; std::unique_ptr descriptorSetRenderer; std::unique_ptr graphicsPipeline; std::unique_ptr graphicsPipelinePassthrough; std::unique_ptr mesh; std::unique_ptr meshPassthrough; std::unique_ptr commandBuffer; public: Application(); ~Application(); bool Update(); private: void InitializeFrameBuffer(); void InitializeRenderer(); void InitializeTextureSampler(); void InitializeDescriptorSets(); void InitializeGraphicsPipeline(); void InitializeMesh(); void InitializeCommandBuffer(); void RecordCommandBuffer(); void UpdateUniformBuffer(); }; }