diff --git a/Engine/engine/draw.cpp b/Engine/engine/draw.cpp index bf14591..2987a5b 100644 --- a/Engine/engine/draw.cpp +++ b/Engine/engine/draw.cpp @@ -9,7 +9,7 @@ #include "shaders.hpp" #include "constants.hpp" #include "misc.hpp" -#include "shader.h" +#include "shader.hpp" int drawFigure(const int whatToDraw) { diff --git a/Engine/engine/match b/Engine/engine/match index 06bf652..7290abd 100755 Binary files a/Engine/engine/match and b/Engine/engine/match differ diff --git a/Engine/engine/shader.h b/Engine/engine/shader.cpp similarity index 51% rename from Engine/engine/shader.h rename to Engine/engine/shader.cpp index 5538a65..739411f 100644 --- a/Engine/engine/shader.h +++ b/Engine/engine/shader.cpp @@ -1,5 +1,5 @@ -#ifndef SHADER_H -#define SHADER_H +#ifndef SHADER_CPP +#define SHADER_CPP #include @@ -7,15 +7,12 @@ #include #include #include +#include "shader.hpp" -class Shader + + +Shader::Shader(const std::string vertexPath, const std::string fragmentPath) { -public: - unsigned int ID; - // constructor generates the shader on the fly - // ------------------------------------------------------------------------ - Shader(const std::string vertexPath, const std::string fragmentPath) - { // 1. retrieve the vertex/fragment source code from filePath std::string vertexCode; std::string fragmentCode; @@ -67,55 +64,50 @@ public: // delete the shaders as they're linked into our program now and no longer necessary glDeleteShader(vertex); glDeleteShader(fragment); - } - // activate the shader - // ------------------------------------------------------------------------ - void use() - { - glUseProgram(ID); - } - // utility uniform functions - // ------------------------------------------------------------------------ - void setBool(const std::string &name, bool value) const - { - glUniform1i(glGetUniformLocation(ID, name.c_str()), (int)value); - } - // ------------------------------------------------------------------------ - void setInt(const std::string &name, int value) const - { - glUniform1i(glGetUniformLocation(ID, name.c_str()), value); - } - // ------------------------------------------------------------------------ - void setFloat(const std::string &name, float value) const - { - glUniform1f(glGetUniformLocation(ID, name.c_str()), value); - } +} -private: - // utility function for checking shader compilation/linking errors. - // ------------------------------------------------------------------------ - void checkCompileErrors(unsigned int shader, std::string type) +void Shader::use() +{ + glUseProgram(ID); +} + +void Shader::setBool(const std::string &name, bool value) const +{ + glUniform1i(glGetUniformLocation(ID, name.c_str()), (int)value); +} + +void Shader::setInt(const std::string &name, int value) const +{ + glUniform1i(glGetUniformLocation(ID, name.c_str()), value); +} + +void Shader::setFloat(const std::string &name, float value) const +{ + glUniform1f(glGetUniformLocation(ID, name.c_str()), value); +} + +void Shader::checkCompileErrors(unsigned int shader, std::string type) +{ + int success; + char infoLog[1024]; + if (type != "PROGRAM") { - int success; - char infoLog[1024]; - if (type != "PROGRAM") + glGetShaderiv(shader, GL_COMPILE_STATUS, &success); + if (!success) { - glGetShaderiv(shader, GL_COMPILE_STATUS, &success); - if (!success) - { - glGetShaderInfoLog(shader, 1024, NULL, infoLog); - std::cout << "ERROR::SHADER_COMPILATION_ERROR of type: " << type << "\n" << infoLog << "\n -- --------------------------------------------------- -- " << std::endl; - } - } - else - { - glGetProgramiv(shader, GL_LINK_STATUS, &success); - if (!success) - { - glGetProgramInfoLog(shader, 1024, NULL, infoLog); - std::cout << "ERROR::PROGRAM_LINKING_ERROR of type: " << type << "\n" << infoLog << "\n -- --------------------------------------------------- -- " << std::endl; - } + glGetShaderInfoLog(shader, 1024, NULL, infoLog); + std::cout << "ERROR::SHADER_COMPILATION_ERROR of type: " << type << "\n" << infoLog << "\n -- --------------------------------------------------- -- " << std::endl; } } -}; -#endif + else + { + glGetProgramiv(shader, GL_LINK_STATUS, &success); + if (!success) + { + glGetProgramInfoLog(shader, 1024, NULL, infoLog); + std::cout << "ERROR::PROGRAM_LINKING_ERROR of type: " << type << "\n" << infoLog << "\n -- --------------------------------------------------- -- " << std::endl; + } + } +} + +#endif // SHADER_CPP \ No newline at end of file diff --git a/Engine/engine/shader.hpp b/Engine/engine/shader.hpp index 798aff5..a97e13c 100644 --- a/Engine/engine/shader.hpp +++ b/Engine/engine/shader.hpp @@ -1,36 +1,35 @@ #ifndef SHADER_HPP #define SHADER_HPP -#include // include glad to get all the required OpenGL headers - +#include + #include #include #include #include - class Shader { public: - // the program ID unsigned int ID; - - // constructor reads and builds the shader + // constructor generates the shader on the fly + // ------------------------------------------------------------------------ Shader(const std::string vertexPath, const std::string fragmentPath); - // use/activate the shader + + // activate the shader + // ------------------------------------------------------------------------ void use(); // utility uniform functions - void setBool(const std::string &name, bool value) const; - void setInt(const std::string &name, int value) const; + // ------------------------------------------------------------------------ + void setBool(const std::string &name, bool value) const; + // ------------------------------------------------------------------------ + void setInt(const std::string &name, int value) const; + // ------------------------------------------------------------------------ void setFloat(const std::string &name, float value) const; - // -private: - unsigned int linkShaderObjectsShaderProgram(const unsigned int vertexShaders, const unsigned int fragmentShader) const; - const char* readFile(const std::string fileName) const; - std::pair compileShaders(const char* vertexShaderSource, const char* fragmentShaderSource) const; - unsigned int compileShader(const GLenum shaderType, const char *shaderSource) const; - int shaderSuccessful(const unsigned int shader, const bool compilation) const; - void shaderFailedMessage(const unsigned int shader, const bool compilation) const; + +private: + // utility function for checking shader compilation/linking errors. + // ------------------------------------------------------------------------ + void checkCompileErrors(unsigned int shader, std::string type); }; - -#endif \ No newline at end of file +#endif