1
0
Fork 0

Graphics/DefaultRenderer2D: use GfxDriver/ShaderProgram instead of Graphics/ShaderProgram

This commit is contained in:
Henrik Hautakoski 2022-09-18 13:55:43 +02:00
parent 9bea188686
commit 82e08d0785
2 changed files with 12 additions and 9 deletions

View file

@ -7,6 +7,8 @@
namespace sp { namespace sp {
class ShaderProgram;
class DefaultRenderer2D : public Renderer2D class DefaultRenderer2D : public Renderer2D
{ {
public : public :
@ -21,7 +23,7 @@ protected :
std::vector<const Renderable2D*> m_queue; std::vector<const Renderable2D*> m_queue;
ShaderProgram m_shader; ShaderProgram* m_shader;
}; };
} // namespace } // namespace

View file

@ -2,19 +2,20 @@
#include <Spectre/Graphics/Texture.h> #include <Spectre/Graphics/Texture.h>
#include <Spectre/Graphics/Renderable.h> #include <Spectre/Graphics/Renderable.h>
#include <Spectre/Graphics/DefaultRenderer2D.h> #include <Spectre/Graphics/DefaultRenderer2D.h>
#include <GfxDriver/OpenGL/OpenGLShaderProgram.h>
#include <Graphics/GL/gl.h> #include <Graphics/GL/gl.h>
namespace sp { namespace sp {
DefaultRenderer2D::DefaultRenderer2D() DefaultRenderer2D::DefaultRenderer2D()
{ {
m_shader.create(); m_shader = new OpenGLShaderProgram();
if (!m_shader.loadFromFile("assets/shaders/standard.shader.glsl")) { if (!m_shader->loadFromFile("assets/shaders/standard.shader.glsl")) {
std::cout << "Failed to load shader: " << m_shader.getLastError() << std::endl; std::cout << "Failed to load shader: " << m_shader->getLastError() << std::endl;
} }
if (!m_shader.link()) { if (!m_shader->link()) {
std::cout << "Failed to link shader: " << m_shader.getLastError() << std::endl; std::cout << "Failed to link shader: " << m_shader->getLastError() << std::endl;
} }
} }
@ -33,7 +34,7 @@ void DefaultRenderer2D::render()
viewMatrix = Matrix4f::Identity; viewMatrix = Matrix4f::Identity;
} }
m_shader.enable(); m_shader->enable();
glEnableVertexAttribArray(VertexAttribPosition); glEnableVertexAttribArray(VertexAttribPosition);
glEnableVertexAttribArray(VertexAttribColor0); glEnableVertexAttribArray(VertexAttribColor0);
@ -48,7 +49,7 @@ void DefaultRenderer2D::render()
const Texture *tex = obj->getTexture(); const Texture *tex = obj->getTexture();
Matrix4f modelViewMatrix = viewMatrix * obj->getTransform().getMatrix(); 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(VertexAttribPosition, 2, GL_FLOAT, GL_FALSE, sizeof(Vertex2D), data + 0);
glVertexAttribPointer(VertexAttribColor0, 3, GL_FLOAT, GL_FALSE, sizeof(Vertex2D), data + 8); glVertexAttribPointer(VertexAttribColor0, 3, GL_FLOAT, GL_FALSE, sizeof(Vertex2D), data + 8);
@ -69,7 +70,7 @@ void DefaultRenderer2D::render()
glDisableVertexAttribArray(VertexAttribColor0); glDisableVertexAttribArray(VertexAttribColor0);
glDisableVertexAttribArray(VertexAttribTexCoord0); glDisableVertexAttribArray(VertexAttribTexCoord0);
m_shader.disable(); m_shader->disable();
m_queue.clear(); m_queue.clear();
} }