From 9bea188686cd1f00a3c11151feb95b356c0a7225 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Sun, 18 Sep 2022 13:54:32 +0200 Subject: [PATCH] Graphics/BatchRenderer2D: use GfxDriver/ShaderProgram instead of Graphics/ShaderProgram --- include/Spectre/Graphics/BatchRenderer2D.h | 4 +- source/Graphics/BatchRenderer2D.cpp | 43 ++++++++++++---------- 2 files changed, 26 insertions(+), 21 deletions(-) diff --git a/include/Spectre/Graphics/BatchRenderer2D.h b/include/Spectre/Graphics/BatchRenderer2D.h index 448a503..79bcd17 100644 --- a/include/Spectre/Graphics/BatchRenderer2D.h +++ b/include/Spectre/Graphics/BatchRenderer2D.h @@ -67,8 +67,8 @@ protected : unsigned short m_size; - ShaderProgram m_textShader; - ShaderProgram m_spriteShader; + ShaderProgram* m_textShader; + ShaderProgram* m_spriteShader; }; } // namespace diff --git a/source/Graphics/BatchRenderer2D.cpp b/source/Graphics/BatchRenderer2D.cpp index 0d3161a..3eaed60 100644 --- a/source/Graphics/BatchRenderer2D.cpp +++ b/source/Graphics/BatchRenderer2D.cpp @@ -2,10 +2,10 @@ #include #include #include -#include #include #include #include +#include #include #include @@ -49,22 +49,24 @@ BatchRenderer2D::BatchRenderer2D() glEnableVertexAttribArray(VertexAttribTexCoord0); glVertexAttribPointer(VertexAttribTexCoord0, 2, GL_FLOAT, GL_FALSE, sizeof(Vertex2D), (void*)24); - m_textShader.create(); - if (!m_textShader.loadFromFile("assets/shaders/text.shader.glsl")) { - std::cout << "Failed to load shader: " << m_textShader.getLastError() << std::endl; + m_textShader = new OpenGLShaderProgram(); + + if (!m_textShader->loadFromFile("assets/shaders/text.shader.glsl")) { + std::cout << "Failed to load shader: " << m_textShader->getLastError() << std::endl; } - if (!m_textShader.link()) { - std::cout << "Failed to link shader: " << m_textShader.getLastError() << std::endl; + if (!m_textShader->link()) { + std::cout << "Failed to link shader: " << m_textShader->getLastError() << std::endl; } - m_spriteShader.create(); - if (!m_spriteShader.loadFromFile("assets/shaders/standard.shader.glsl")) { - std::cout << "Failed to load shader: " << m_spriteShader.getLastError() << std::endl; + m_spriteShader = new OpenGLShaderProgram(); + + if (!m_spriteShader->loadFromFile("assets/shaders/standard.shader.glsl")) { + std::cout << "Failed to load shader: " << m_spriteShader->getLastError() << std::endl; } - if (!m_spriteShader.link()) { - std::cout << "Failed to link shader: " << m_spriteShader.getLastError() << std::endl; + if (!m_spriteShader->link()) { + std::cout << "Failed to link shader: " << m_spriteShader->getLastError() << std::endl; } } @@ -73,6 +75,9 @@ BatchRenderer2D::~BatchRenderer2D() glDeleteBuffers(1, &m_VBO); glDeleteBuffers(1, &m_IBO); glDeleteVertexArrays(1, &m_VAO); + + delete m_textShader; + delete m_spriteShader; } void BatchRenderer2D::setBatchSize(unsigned short size) @@ -146,13 +151,13 @@ void BatchRenderer2D::render() glBindVertexArray(m_VAO); // Set shader uniforms. - m_textShader.enable(); - m_textShader.setUniform("u_MVP", MVP); - m_textShader.disable(); + m_textShader->enable(); + m_textShader->setUniform("u_MVP", MVP); + m_textShader->disable(); - m_spriteShader.enable(); - m_spriteShader.setUniform("u_MVP", MVP); - m_spriteShader.disable(); + m_spriteShader->enable(); + m_spriteShader->setUniform("u_MVP", MVP); + m_spriteShader->disable(); prepareQueue(); @@ -242,9 +247,9 @@ void BatchRenderer2D::drawBatch(Batch& batch) glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - shader = &m_textShader; + shader = m_textShader; } else { - shader = &m_spriteShader; + shader = m_spriteShader; } // enable shader.