Add support for geometry shaders
This commit is contained in:
parent
017766a2ff
commit
c08d1e8e5e
|
@ -50,7 +50,7 @@ Camera::Camera(GLfloat posX, GLfloat posY, GLfloat posZ, GLfloat upX, GLfloat up
|
|||
|
||||
Camera::~Camera()
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
|
||||
glm::mat4 Camera::getViewMatrix()
|
||||
|
|
|
@ -117,7 +117,7 @@ Shader& Shader::createShader(const std::string& vertexShaderFilePath, const std:
|
|||
{
|
||||
fatalError("Geometry shader failed to be created!");
|
||||
}
|
||||
|
||||
|
||||
Shader::compileShader(vertexShaderFilePath, shader->m_vertexShaderID);
|
||||
Shader::compileShader(fragmentShaderFilePath, shader->m_fragmentShaderID);
|
||||
Shader::compileShader(geometryShaderFilePath, shader->m_geometryShaderID);
|
||||
|
@ -185,6 +185,9 @@ void Shader::linkShaders()
|
|||
// Attach our shaders to our program
|
||||
glAttachShader(m_programID, m_vertexShaderID);
|
||||
glAttachShader(m_programID, m_fragmentShaderID);
|
||||
if (m_geometryShaderID != 0) {
|
||||
glAttachShader(m_programID, m_geometryShaderID);
|
||||
}
|
||||
|
||||
// Link our program
|
||||
glLinkProgram(m_programID);
|
||||
|
@ -207,6 +210,9 @@ void Shader::linkShaders()
|
|||
// Don't leak shaders either.
|
||||
glDeleteShader(m_vertexShaderID);
|
||||
glDeleteShader(m_fragmentShaderID);
|
||||
if (m_geometryShaderID != 0) {
|
||||
glDeleteShader(m_geometryShaderID);
|
||||
}
|
||||
|
||||
std::printf("%s\n", &(infoLog[0]));
|
||||
fatalError("Shader linking failed!");
|
||||
|
@ -217,6 +223,11 @@ void Shader::linkShaders()
|
|||
glDetachShader(m_programID, m_fragmentShaderID);
|
||||
glDeleteShader(m_vertexShaderID);
|
||||
glDeleteShader(m_fragmentShaderID);
|
||||
|
||||
if (m_geometryShaderID != 0) {
|
||||
glDetachShader(m_programID, m_geometryShaderID);
|
||||
glDeleteShader(m_geometryShaderID);
|
||||
}
|
||||
}
|
||||
|
||||
/** Bind the shader for usage */
|
||||
|
@ -287,12 +298,15 @@ void Shader::use()
|
|||
{
|
||||
m_valid = true;
|
||||
|
||||
// Bind the shader
|
||||
start();
|
||||
|
||||
// Bind the buffers needed
|
||||
glBindVertexArray(vao);
|
||||
glBindBuffer(GL_ARRAY_BUFFER, vbo);
|
||||
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ebo);
|
||||
|
||||
// Enable all attributes
|
||||
for (auto it(m_attributes.begin()); it != m_attributes.end(); ++it)
|
||||
{
|
||||
GLuint location = getAttribLocation(it->first);
|
||||
|
|
Loading…
Reference in New Issue