// 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: RenderPipeline renderPipeline; ShaderManager shaderManager; shaderlock_t lockSimpleTextured = -1; shaderlock_t lockUIShaderProgram = -1; shaderlock_t lockFontShader = -1; public: BackBufferRenderTarget backBuffer; SimpleTexturedShader *simpleTexturedShader = nullptr; UIShader *uiShader = nullptr; FontShader *fontShader = nullptr; /** * Construct a new RenderManager for a game instance. */ RenderManager(DawnGame *game); RenderTarget * getBackBuffer() override; RenderPipeline * getRenderPipeline() override; ShaderManager * getShaderManager() override; void setRenderFlags(renderflag_t renderFlags) override; void init() override; void update() override; /** * Destroy a previously initialized RenderManager. */ ~RenderManager(); }; }