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;
|
unsigned short m_size;
|
||||||
|
|
||||||
ShaderProgram m_textShader;
|
ShaderProgram* m_textShader;
|
||||||
ShaderProgram m_spriteShader;
|
ShaderProgram* m_spriteShader;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
|
||||||
|
|
@ -2,10 +2,10 @@
|
||||||
#include <Spectre/System/Log.h>
|
#include <Spectre/System/Log.h>
|
||||||
#include <Spectre/Graphics/Renderable.h>
|
#include <Spectre/Graphics/Renderable.h>
|
||||||
#include <Spectre/Graphics/RenderState.h>
|
#include <Spectre/Graphics/RenderState.h>
|
||||||
#include <Spectre/Graphics/ShaderProgram.h>
|
|
||||||
#include <Spectre/Graphics/Texture.h>
|
#include <Spectre/Graphics/Texture.h>
|
||||||
#include <Spectre/Graphics/BatchRenderer2D.h>
|
#include <Spectre/Graphics/BatchRenderer2D.h>
|
||||||
#include <Spectre/Math/Math.h>
|
#include <Spectre/Math/Math.h>
|
||||||
|
#include <GfxDriver/OpenGL/OpenGLShaderProgram.h>
|
||||||
#include <Graphics/GL/gl.h>
|
#include <Graphics/GL/gl.h>
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
|
@ -49,22 +49,24 @@ BatchRenderer2D::BatchRenderer2D()
|
||||||
glEnableVertexAttribArray(VertexAttribTexCoord0);
|
glEnableVertexAttribArray(VertexAttribTexCoord0);
|
||||||
glVertexAttribPointer(VertexAttribTexCoord0, 2, GL_FLOAT, GL_FALSE, sizeof(Vertex2D), (void*)24);
|
glVertexAttribPointer(VertexAttribTexCoord0, 2, GL_FLOAT, GL_FALSE, sizeof(Vertex2D), (void*)24);
|
||||||
|
|
||||||
m_textShader.create();
|
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->loadFromFile("assets/shaders/text.shader.glsl")) {
|
||||||
|
std::cout << "Failed to load shader: " << m_textShader->getLastError() << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!m_textShader.link()) {
|
if (!m_textShader->link()) {
|
||||||
std::cout << "Failed to link shader: " << m_textShader.getLastError() << std::endl;
|
std::cout << "Failed to link shader: " << m_textShader->getLastError() << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_spriteShader.create();
|
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->loadFromFile("assets/shaders/standard.shader.glsl")) {
|
||||||
|
std::cout << "Failed to load shader: " << m_spriteShader->getLastError() << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!m_spriteShader.link()) {
|
if (!m_spriteShader->link()) {
|
||||||
std::cout << "Failed to link shader: " << m_spriteShader.getLastError() << std::endl;
|
std::cout << "Failed to link shader: " << m_spriteShader->getLastError() << std::endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -73,6 +75,9 @@ BatchRenderer2D::~BatchRenderer2D()
|
||||||
glDeleteBuffers(1, &m_VBO);
|
glDeleteBuffers(1, &m_VBO);
|
||||||
glDeleteBuffers(1, &m_IBO);
|
glDeleteBuffers(1, &m_IBO);
|
||||||
glDeleteVertexArrays(1, &m_VAO);
|
glDeleteVertexArrays(1, &m_VAO);
|
||||||
|
|
||||||
|
delete m_textShader;
|
||||||
|
delete m_spriteShader;
|
||||||
}
|
}
|
||||||
|
|
||||||
void BatchRenderer2D::setBatchSize(unsigned short size)
|
void BatchRenderer2D::setBatchSize(unsigned short size)
|
||||||
|
|
@ -146,13 +151,13 @@ void BatchRenderer2D::render()
|
||||||
glBindVertexArray(m_VAO);
|
glBindVertexArray(m_VAO);
|
||||||
|
|
||||||
// Set shader uniforms.
|
// Set shader uniforms.
|
||||||
m_textShader.enable();
|
m_textShader->enable();
|
||||||
m_textShader.setUniform("u_MVP", MVP);
|
m_textShader->setUniform("u_MVP", MVP);
|
||||||
m_textShader.disable();
|
m_textShader->disable();
|
||||||
|
|
||||||
m_spriteShader.enable();
|
m_spriteShader->enable();
|
||||||
m_spriteShader.setUniform("u_MVP", MVP);
|
m_spriteShader->setUniform("u_MVP", MVP);
|
||||||
m_spriteShader.disable();
|
m_spriteShader->disable();
|
||||||
|
|
||||||
prepareQueue();
|
prepareQueue();
|
||||||
|
|
||||||
|
|
@ -242,9 +247,9 @@ void BatchRenderer2D::drawBatch(Batch& batch)
|
||||||
glEnable(GL_BLEND);
|
glEnable(GL_BLEND);
|
||||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||||
|
|
||||||
shader = &m_textShader;
|
shader = m_textShader;
|
||||||
} else {
|
} else {
|
||||||
shader = &m_spriteShader;
|
shader = m_spriteShader;
|
||||||
}
|
}
|
||||||
|
|
||||||
// enable shader.
|
// enable shader.
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue