Even more shared pointers.

This commit is contained in:
2023-11-10 22:33:21 -06:00
parent 732a90931c
commit 085facd079
19 changed files with 89 additions and 80 deletions

View File

@ -9,28 +9,29 @@
using namespace Dawn;
RenderManager::RenderManager() :
IRenderManager(),
renderPipeline(this)
{
RenderManager::RenderManager() : IRenderManager() {
renderPipeline = std::make_shared<RenderPipeline>();
shaderManager = std::make_shared<ShaderManager>();
backBuffer = std::make_shared<BackBufferRenderTarget>(*this);
}
void RenderManager::init(std::weak_ptr<DawnGame> game) {
this->game = game;
// Init the render pipeline
renderPipeline->init(std::static_pointer_cast<RenderManager>(shared_from_this()));
// Lock the common shaders
lockSimpleTextured = shaderManager.lockShader<SimpleTexturedShader>();
simpleTexturedShader = shaderManager.getShader<SimpleTexturedShader>(
lockSimpleTextured = shaderManager->lockShader<SimpleTexturedShader>();
simpleTexturedShader = shaderManager->getShader<SimpleTexturedShader>(
lockSimpleTextured
);
lockUIShaderProgram = shaderManager.lockShader<UIShader>();
uiShader = shaderManager.getShader<UIShader>(lockUIShaderProgram);
lockUIShaderProgram = shaderManager->lockShader<UIShader>();
uiShader = shaderManager->getShader<UIShader>(lockUIShaderProgram);
lockFontShader = shaderManager.lockShader<FontShader>();
fontShader = shaderManager.getShader<FontShader>(lockFontShader);
renderPipeline.init();
lockFontShader = shaderManager->lockShader<FontShader>();
fontShader = shaderManager->getShader<FontShader>(lockFontShader);
assertNoGLError();
// Prepare the initial values
@ -53,12 +54,12 @@ std::shared_ptr<RenderTarget> RenderManager::getBackBuffer() {
return backBuffer;
}
RenderPipeline * RenderManager::getRenderPipeline() {
return &renderPipeline;
std::shared_ptr<RenderPipeline> RenderManager::getRenderPipeline() {
return renderPipeline;
}
ShaderManager * RenderManager::getShaderManager() {
return &shaderManager;
std::shared_ptr<ShaderManager> RenderManager::getShaderManager() {
return shaderManager;
}
void RenderManager::setRenderFlags(flag_t flags) {
@ -84,7 +85,7 @@ void RenderManager::update() {
}
RenderManager::~RenderManager() {
shaderManager.releaseShader<SimpleTexturedShader>(lockSimpleTextured);
shaderManager.releaseShader<UIShader>(lockUIShaderProgram);
shaderManager.releaseShader<FontShader>(lockFontShader);
shaderManager->releaseShader<SimpleTexturedShader>(lockSimpleTextured);
shaderManager->releaseShader<UIShader>(lockUIShaderProgram);
shaderManager->releaseShader<FontShader>(lockFontShader);
}

View File

@ -15,8 +15,8 @@
namespace Dawn {
class RenderManager : public IRenderManager {
private:
RenderPipeline renderPipeline;
ShaderManager shaderManager;
std::shared_ptr<RenderPipeline> renderPipeline;
std::shared_ptr<ShaderManager> shaderManager;
shaderlock_t lockSimpleTextured = -1;
shaderlock_t lockUIShaderProgram = -1;
shaderlock_t lockFontShader = -1;
@ -33,8 +33,8 @@ namespace Dawn {
RenderManager();
std::shared_ptr<RenderTarget> getBackBuffer() override;
RenderPipeline * getRenderPipeline() override;
ShaderManager * getShaderManager() override;
std::shared_ptr<RenderPipeline> getRenderPipeline() override;
std::shared_ptr<ShaderManager> getShaderManager() override;
void setRenderFlags(flag_t renderFlags) override;
void init(std::weak_ptr<DawnGame> game) override;
void update() override;