29#include <glm/mat4x4.hpp>
30#include <raftel/global_macros.hpp>
88 GLuint
getID()
const {
return shaderID; }
99 std::string lastError;
108 void setError(
const std::string& errorMessage,
const char* file,
int line);
132 ShaderProgram(
const std::string& vertexPath,
const std::string& fragmentPath);
156 bool load(
const std::string& vertexPath,
const std::string& fragmentPath);
206 void setUniform(
const std::string& name,
const glm::mat4& matrix);
249 GLuint programID = 0;
250 std::string lastError;
259 void setError(
const std::string& errorMessage,
const char* file,
int line);
A class to represent an OpenGL shader (vertex, fragment, etc.).
bool loadFromSource(const std::string &sourceCode, GLenum shaderType)
Loads a shader from source code.
const std::string & getLastError() const
Gets the last error message.
GLuint getID() const
Gets the OpenGL shader ID.
MOVABLE_BUT_NOT_COPYABLE(Shader)
Move constructor for Shader.
~Shader()
Destructor for Shader.
Shader()=default
Default constructor for Shader.
bool loadFromFile(const std::string &filePath, GLenum shaderType)
Loads a shader from a file.
void setUniform(const std::string &name, const glm::mat4 &matrix)
Sets a glm::mat4 uniform in the shader program.
void setUniform(const std::string &name, glm::vec4 value)
Sets a glm::vec4 uniform in the shader program.
bool loadFromMemory(const char *vertexSource, const char *fragmentSource)
Loads and compiles vertex and fragment shaders from memory.
void unUse()
Deactivates the shader program.
ShaderProgram()=default
Default constructor for ShaderProgram.
void setUniform(const std::string &name, float value)
Sets a float uniform in the shader program.
GLuint GetProgramID() const
Gets the OpenGL program ID.
void setUniform(const std::string &name, glm::vec3 value)
Sets a glm::vec3 uniform in the shader program.
bool load(const std::string &vertexPath, const std::string &fragmentPath)
Loads and links shaders from files.
MOVABLE_BUT_NOT_COPYABLE(ShaderProgram)
Move constructor for ShaderProgram.
const std::string & getLastError() const
Gets the last error message.
void printActiveUniforms()
Prints active uniforms in the shader program.
void setUniform(const std::string &name, int value)
Sets an integer uniform in the shader program.
void attachShader(const Shader &shader)
Attaches a shader to the shader program.
ShaderProgram(const std::string &vertexPath, const std::string &fragmentPath)
Constructor for ShaderProgram, loading and linking shaders from files.
void use()
Activates the shader program for use.
~ShaderProgram()
Destructor for ShaderProgram.