// Copyright (c) 2022 Dominic Masters // // This software is released under the MIT License. // https://opensource.org/licenses/MIT #pragma once #include "assert/assertgl.hpp" #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; SimpleTexturedShader *simpleTexturedShader = nullptr; UIShader *uiShader = nullptr; FontShader *fontShader = nullptr; /** * 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(flag_t renderFlags) override; void init(std::weak_ptr game) override; void update() override; /** * Destroy a previously initialized RenderManager. */ ~RenderManager(); }; }