diff --git a/include/Spectre/Graphics/DefaultRenderer2D.h b/include/Spectre/Graphics/DefaultRenderer2D.h index 6ef367a..129eb16 100644 --- a/include/Spectre/Graphics/DefaultRenderer2D.h +++ b/include/Spectre/Graphics/DefaultRenderer2D.h @@ -7,6 +7,8 @@ namespace sp { +class ShaderProgram; + class DefaultRenderer2D : public Renderer2D { public : @@ -21,7 +23,7 @@ protected : std::vector m_queue; - ShaderProgram m_shader; + ShaderProgram* m_shader; }; } // namespace diff --git a/source/Graphics/DefaultRenderer2D.cpp b/source/Graphics/DefaultRenderer2D.cpp index 112854e..8a396f5 100644 --- a/source/Graphics/DefaultRenderer2D.cpp +++ b/source/Graphics/DefaultRenderer2D.cpp @@ -2,19 +2,20 @@ #include #include #include +#include #include namespace sp { DefaultRenderer2D::DefaultRenderer2D() { - m_shader.create(); - if (!m_shader.loadFromFile("assets/shaders/standard.shader.glsl")) { - std::cout << "Failed to load shader: " << m_shader.getLastError() << std::endl; + m_shader = new OpenGLShaderProgram(); + if (!m_shader->loadFromFile("assets/shaders/standard.shader.glsl")) { + std::cout << "Failed to load shader: " << m_shader->getLastError() << std::endl; } - if (!m_shader.link()) { - std::cout << "Failed to link shader: " << m_shader.getLastError() << std::endl; + if (!m_shader->link()) { + std::cout << "Failed to link shader: " << m_shader->getLastError() << std::endl; } } @@ -33,7 +34,7 @@ void DefaultRenderer2D::render() viewMatrix = Matrix4f::Identity; } - m_shader.enable(); + m_shader->enable(); glEnableVertexAttribArray(VertexAttribPosition); glEnableVertexAttribArray(VertexAttribColor0); @@ -48,7 +49,7 @@ void DefaultRenderer2D::render() const Texture *tex = obj->getTexture(); Matrix4f modelViewMatrix = viewMatrix * obj->getTransform().getMatrix(); - m_shader.setMVPMatrix(modelViewMatrix); + m_shader->setMVPMatrix(modelViewMatrix); glVertexAttribPointer(VertexAttribPosition, 2, GL_FLOAT, GL_FALSE, sizeof(Vertex2D), data + 0); glVertexAttribPointer(VertexAttribColor0, 3, GL_FLOAT, GL_FALSE, sizeof(Vertex2D), data + 8); @@ -69,7 +70,7 @@ void DefaultRenderer2D::render() glDisableVertexAttribArray(VertexAttribColor0); glDisableVertexAttribArray(VertexAttribTexCoord0); - m_shader.disable(); + m_shader->disable(); m_queue.clear(); }