Graphics/BatchRenderer2D: use GfxDriver/ShaderProgram instead of Graphics/ShaderProgram
This commit is contained in:
parent
cc1f287a3a
commit
9bea188686
2 changed files with 26 additions and 21 deletions
|
|
@ -67,8 +67,8 @@ protected :
|
|||
|
||||
unsigned short m_size;
|
||||
|
||||
ShaderProgram m_textShader;
|
||||
ShaderProgram m_spriteShader;
|
||||
ShaderProgram* m_textShader;
|
||||
ShaderProgram* m_spriteShader;
|
||||
};
|
||||
|
||||
} // namespace
|
||||
|
|
|
|||
|
|
@ -2,10 +2,10 @@
|
|||
#include <Spectre/System/Log.h>
|
||||
#include <Spectre/Graphics/Renderable.h>
|
||||
#include <Spectre/Graphics/RenderState.h>
|
||||
#include <Spectre/Graphics/ShaderProgram.h>
|
||||
#include <Spectre/Graphics/Texture.h>
|
||||
#include <Spectre/Graphics/BatchRenderer2D.h>
|
||||
#include <Spectre/Math/Math.h>
|
||||
#include <GfxDriver/OpenGL/OpenGLShaderProgram.h>
|
||||
#include <Graphics/GL/gl.h>
|
||||
|
||||
#include <algorithm>
|
||||
|
|
@ -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.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue