Ghettomerge

This commit is contained in:
Tobias Dahl
2014-03-11 22:32:49 +01:00
parent 33dbcc10a1
commit bb6cc1a23e
41 changed files with 892 additions and 648 deletions
+11 -19
View File
@@ -84,20 +84,16 @@ bool Shader::IsCompiled() const
return m_ShaderHandle != 0;
}
ShaderProgram::ShaderProgram()
{
Initialize();
}
ShaderProgram::~ShaderProgram()
{
Unbind();
glDeleteProgram(m_ShaderProgramHandle);
if (m_ShaderProgramHandle != 0) {
glDeleteProgram(m_ShaderProgramHandle);
}
}
void ShaderProgram::AddShader(std::unique_ptr<Shader> shader)
void ShaderProgram::AddShader(std::shared_ptr<Shader> shader)
{
m_Shaders.push_back(std::move(shader));
m_Shaders.push_back(shader);
}
void ShaderProgram::Compile()
@@ -111,6 +107,11 @@ void ShaderProgram::Compile()
GLuint ShaderProgram::Link()
{
if (m_Shaders.size() == 0) {
LOG_ERROR("Failed to link shader program: No shaders bound");
return 0;
}
LOG_INFO("Linking shader program");
m_ShaderProgramHandle = glCreateProgram();
for (auto &shader : m_Shaders) {
@@ -119,10 +120,6 @@ GLuint ShaderProgram::Link()
glLinkProgram(m_ShaderProgramHandle);
if (GLERROR("glLinkProgram"))
return 0;
for (auto &shader : m_Shaders) {
shader.release();
}
m_Shaders.clear();
return m_ShaderProgramHandle;
@@ -144,9 +141,4 @@ void ShaderProgram::Bind()
void ShaderProgram::Unbind()
{
glActiveShaderProgram(0, 0);
}
void ShaderProgram::Initialize()
{
m_ShaderProgramHandle = 0;
}
}