From 0bf4ad9e4a9e1c97e92aa23a365405dfef89bd7c Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Sun, 17 Jan 2021 19:36:30 +0000 Subject: Big reshuffle Fixes code quality warnings now picked up. --- shader.cpp | 100 ------------------------------------------------------------- 1 file changed, 100 deletions(-) delete mode 100644 shader.cpp (limited to 'shader.cpp') diff --git a/shader.cpp b/shader.cpp deleted file mode 100644 index 4d9f43b..0000000 --- a/shader.cpp +++ /dev/null @@ -1,100 +0,0 @@ -#include "shader.h" -#include "transform.h" -#include -#include -#include -#include - -Shader::Shader(const std::string &) : - m_program {glCreateProgram()}, m_shaders {CreateShader( - (GLchar *)(basicShader_vs), basicShader_vs_len, GL_VERTEX_SHADER), - CreateShader( - (GLchar *)basicShader_fs, basicShader_fs_len, GL_FRAGMENT_SHADER)}, - m_uniforms {} -{ - for (auto m_shader : m_shaders) { - glAttachShader(m_program, m_shader); - } - - glBindAttribLocation(m_program, 0, "position"); - glBindAttribLocation(m_program, 1, "texCoord"); - glBindAttribLocation(m_program, 2, "normal"); - - glLinkProgram(m_program); - CheckShaderError(m_program, GL_LINK_STATUS, true, "Error linking shader program"); - - glValidateProgram(m_program); - CheckShaderError(m_program, GL_VALIDATE_STATUS, true, "Invalid shader program"); - - m_uniforms = {glGetUniformLocation(m_program, "MVP"), glGetUniformLocation(m_program, "Normal"), - glGetUniformLocation(m_program, "lightDirection")}; -} - -Shader::~Shader() -{ - for (auto m_shader : m_shaders) { - glDetachShader(m_program, m_shader); - glDeleteShader(m_shader); - } - - glDeleteProgram(m_program); -} - -void -Shader::Bind() const -{ - glUseProgram(m_program); -} - -void -Shader::Update(const Transform & transform, const Camera & camera) const -{ - glm::mat4 MVP = transform.GetMVP(camera); - glm::mat4 Normal = transform.GetModel(); - - glUniformMatrix4fv(m_uniforms[0], 1, GL_FALSE, &MVP[0][0]); - glUniformMatrix4fv(m_uniforms[1], 1, GL_FALSE, &Normal[0][0]); - glUniform3f(m_uniforms[2], 0.0F, 0.0F, 1.0F); -} - -void -Shader::CheckShaderError(GLuint shader, GLuint flag, bool isProgram, const std::string & errorMessage) -{ - GLint success = 0; - std::array error {}; - - if (isProgram) { - glGetProgramiv(shader, flag, &success); - } - else { - glGetShaderiv(shader, flag, &success); - } - - if (success == GL_FALSE) { - if (isProgram) { - glGetProgramInfoLog(shader, error.size(), nullptr, error.data()); - } - else { - glGetShaderInfoLog(shader, error.size(), nullptr, error.data()); - } - - throw std::runtime_error {errorMessage + ": '" + std::string {error.data(), error.size()} + "'"}; - } -} - -GLuint -Shader::CreateShader(const GLchar * text, GLint len, unsigned int type) -{ - GLuint shader = glCreateShader(type); - - if (shader == 0) { - throw std::runtime_error {"Error compiling shader type " + std::to_string(type)}; - } - - glShaderSource(shader, 1, &text, &len); - glCompileShader(shader); - - CheckShaderError(shader, GL_COMPILE_STATUS, false, "Error compiling shader!"); - - return shader; -} -- cgit v1.2.3