// Copyright (c) 2022 Dominic Masters // // This software is released under the MIT License. // https://opensource.org/licenses/MIT #pragma once #include "display/BackBufferRenderTarget.hpp" #include "display/shader/ShaderManager.hpp" #include "display/shader/shaders/SimpleTexturedShader.hpp" #include "display/shader/shaders/FontShader.hpp" #include "display/shader/shaders/UIShader.hpp" #include "display/RenderPipeline.hpp" namespace Dawn { class RenderManager : public IRenderManager { private: std::shared_ptr renderPipeline; std::shared_ptr shaderManager; shaderlock_t lockSimpleTextured = -1; shaderlock_t lockUIShaderProgram = -1; shaderlock_t lockFontShader = -1; public: std::shared_ptr backBuffer; std::shared_ptr simpleTexturedShader; std::shared_ptr uiShader; std::shared_ptr fontShader; /** * Construct a new RenderManager for a game instance. */ RenderManager(); std::shared_ptr getBackBuffer() override; std::shared_ptr getRenderPipeline() override; std::shared_ptr getShaderManager() override; void setRenderFlags(const flag_t renderFlags) override; void init(const std::weak_ptr game) override; void update() override; /** * Destroy a previously initialized RenderManager. */ ~RenderManager(); }; }