// Copyright (c) 2022 Dominic Masters // // This software is released under the MIT License. // https://opensource.org/licenses/MIT #pragma once #include "display/_RenderManager.hpp" #include "display/BackBufferRenderTarget.hpp" #include "display/shader/ShaderManager.hpp" #include "display/shader/SimpleTexturedShader.hpp" #include "display/shader/UIShaderProgram.hpp" #include "display/RenderPipeline.hpp" #include "display/font/ExampleFont.hpp" namespace Dawn { class RenderManager : public IRenderManager { private: RenderPipeline renderPipeline; ShaderManager shaderManager; shaderlock_t lockSimpleTextured = -1; shaderlock_t lockUIShaderProgram = -1; public: BackBufferRenderTarget backBuffer; SimpleTexturedShader *simpleTexturedShader = nullptr; SimpleTexturedShader *uiShader = nullptr; ExampleFont defaultFont; /** * 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(); }; }